[FIX] Kreisel-Weichen: Ende-an-Ende-Raeder und Zeichentoleranz
- Rad/Rad an beiden Flanken gilt nur bei gleich ausgerichteten Raedern als "Seite an Seite"; in Gegenrichtung (Kreisel seitlich versetzt Ende an Ende) ist es eine Weiche - toleranz_beruehrung von 1 auf 10 mm (Zeichenungenauigkeiten, Spalt und Ueberlappung) - Unit-Tests fuer Ende-an-Ende, Seite-an-Seite und den Fall aus test.dxf (E3/C7) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+12
-4
@@ -1545,7 +1545,11 @@
|
||||
;; BERUEHRUNG ("Kreis/Kreis" bzw. "Kreis/Tangente", Namen wie im Python-
|
||||
;; Export export_neighbors.compute_kreisel_touch_switches).
|
||||
;; - Beruehren sich nur Laufprofile (Kreisel liegen Seite an Seite) ->
|
||||
;; KOLLISION "Tangente/Tangente".
|
||||
;; KOLLISION "Tangente/Tangente". Rad/Rad an beiden Flanken zaehlt nur bei
|
||||
;; GLEICH ausgerichteten Raedern als Seite an Seite; in Gegenrichtung
|
||||
;; (Kreisel seitlich versetzt Ende an Ende) ist es eine Weiche.
|
||||
;; - Toleranz (toleranz_beruehrung, Standard 10 mm) faengt Zeichenungenauig-
|
||||
;; keiten ab - gilt fuer Spalt UND Ueberlappung.
|
||||
;; Die reinen Kerne (kreisel-bp-element/-paar/-berechnen) laufen ohne
|
||||
;; Zeichnung und sind in tests/test_unit.lsp getestet.
|
||||
|
||||
@@ -1676,10 +1680,14 @@
|
||||
(if (<= (abs (- d (+ r (kreisel-bp-get "r" eo)))) tol)
|
||||
(progn
|
||||
(setq pt (kreisel-bp-mitte (cadr rad) (cadr rad2)))
|
||||
;; Beide Kreiselraeder nur an der Flanke = Kreisel Seite an Seite
|
||||
;; Beide Kreiselraeder nur an der Flanke UND gleich ausgerichtet =
|
||||
;; Kreisel Seite an Seite. Zeigen die Raeder in Gegenrichtung, stossen
|
||||
;; die Kreisel seitlich versetzt Ende an Ende (Raeder liegen nebeneinander,
|
||||
;; die Laufprofile treffen sich nur in einem Punkt) - das ist eine Weiche.
|
||||
(if (and (kreisel-bp-frei-p rad pt tol) (kreisel-bp-frei-p rad2 pt tol)
|
||||
(not (and (kreisel-bp-flanke-p rad pt tol)
|
||||
(kreisel-bp-flanke-p rad2 pt tol))))
|
||||
(kreisel-bp-flanke-p rad2 pt tol)
|
||||
(> (kreisel-bp-dot (caddr rad) (caddr rad2)) 0.0))))
|
||||
(setq res (cons (list pt "Kreis/Kreis" rad
|
||||
(strcat (car rad) "/" (car rad2)))
|
||||
res))))))
|
||||
@@ -1766,7 +1774,7 @@
|
||||
)
|
||||
|
||||
;; Toleranzen aus data/json/component_defaults.json (Sektion kreisel)
|
||||
(defun kreisel-bp-toleranz () (float (ssg-cfg-or "kreisel" "toleranz_beruehrung" 1.0)))
|
||||
(defun kreisel-bp-toleranz () (float (ssg-cfg-or "kreisel" "toleranz_beruehrung" 10.0)))
|
||||
(defun kreisel-bp-toleranz-z () (float (ssg-cfg-or "kreisel" "toleranz_hoehe" 1.0)))
|
||||
|
||||
;; Alle KREISEL_n/ECKRAD_n im Modellbereich als Element-Records sammeln.
|
||||
|
||||
Reference in New Issue
Block a user