[CHANGE] Eckverbindungen werden nun als T-Verbindung gezählt und ausgewiesen

This commit is contained in:
2026-10-09 08:12:04 +02:00
parent 690938157f
commit 5ae1fc308c
5 changed files with 69 additions and 64 deletions
+9 -18
View File
@@ -63,15 +63,16 @@ Linien gefunden: 42
## Verbindungstypen
Das Skript unterscheidet drei Typen:
Das Skript unterscheidet im Ergebnis zwei Typen:
| Typ | Beschreibung | Erkennungslogik | Layer | Farbe |
|---|---|---|---|---|
| **Kreuzung** | Zwei Linien kreuzen sich, Schnittpunkt liegt im Inneren beider Linien | Nur echter geometrischer Schnitt, toleranzunabhängig | `D-KREUZUNG` | Rot (1) |
| **T-Verbindung** | Ein Endpunkt liegt auf dem Inneren der anderen Linie | Toleranzbasiert | `D-T_VERBINDUNG` | Grün (3) |
| **Eckverbindung** | Zwei Endpunkte berühren sich | Toleranzbasiert | `D-ECKVERBINDUNG` | Gelb (5) |
| **T-Verbindung** | Ein Endpunkt liegt auf dem Inneren der anderen Linie **oder** zwei Endpunkte berühren sich (Eckverbindung) | Toleranzbasiert | `D-T_VERBINDUNG` | Grün (3) |
> **Wichtig:** Kreuzungen werden ausschließlich über echten geometrischen Schnitt erkannt — niemals über Toleranz. T-Verbindungen und Eckverbindungen werden niemals als Kreuzung klassifiziert, auch wenn sich die verlängerten Linien schneiden würden.
> **Wichtig:** Kreuzungen werden ausschließlich über echten geometrischen Schnitt erkannt — niemals über Toleranz. Endpunkt-Verbindungen werden niemals als Kreuzung klassifiziert, auch wenn sich die verlängerten Linien schneiden würden.
>
> **Hinweis:** Intern trennt `classify-intersection` weiterhin zwischen T-Verbindung (ein Endpunkt) und Eckverbindung (zwei Endpunkte). Für die Ausgabe fasst `display-type` beide zur T-Verbindung zusammen, da derselbe Gerüstverbinder verbaut wird.
---
@@ -106,20 +107,10 @@ Nach der Auswertung wird automatisch eine Textdatei im Verzeichnis der Zeichnung
VERBINDUNGSTYPEN
------------------------------------------------
Kreuzungen : 3
T-Verbindungen : 8
Eckverbindungen : 12
Kreuzungen : 3
T-Verbindungen : 20
------------------------------------------------
SUMMEN
------------------------------------------------
Kreuzungen : 3
Kontaktpunkte (T + Eck) : 20
davon T-Verbindungen : 8
davon Eckverbindungen : 12
GESAMT : 23
GESAMT : 23
================================================
```
@@ -128,7 +119,7 @@ Nach der Auswertung wird automatisch eine Textdatei im Verzeichnis der Zeichnung
## Toleranz — Hinweise
Die Toleranz wirkt **ausschließlich** auf T-Verbindungen und Eckverbindungen:
Die Toleranz wirkt **ausschließlich** auf T-Verbindungen (also auf alle Endpunkt-Verbindungen), nie auf Kreuzungen:
- Zu **klein**: Echte Verbindungen werden nicht erkannt (z.B. bei minimal versetzten Endpunkten durch Zeichenungenauigkeit)
- Zu **groß**: Linien die sich nicht berühren werden fälschlich als verbunden gezählt
+19 -26
View File
@@ -277,6 +277,13 @@
)
)
;; Bildet den intern klassifizierten Typ auf den Anzeigetyp ab.
;; Eckverbindungen werden als T-Verbindungen ausgegeben, da derselbe
;; Gerüstverbinder verbaut wird.
(defun display-type (typ)
(if (= typ "Eckverbindung") "T-Verbindung" typ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; DRAW
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -339,12 +346,10 @@
;; TEXTDATEI-EXPORT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun write-report (all-pts filepath layers / f n-kr n-tv n-ek n-kontakt n-gesamt)
(setq n-kr (count-by-type all-pts "Kreuzung"))
(setq n-tv (count-by-type all-pts "T-Verbindung"))
(setq n-ek (count-by-type all-pts "Eckverbindung"))
(setq n-kontakt (+ n-tv n-ek))
(setq n-gesamt (length all-pts))
(defun write-report (all-pts filepath layers / f n-kr n-tv n-gesamt)
(setq n-kr (count-by-type all-pts "Kreuzung"))
(setq n-tv (count-by-type all-pts "T-Verbindung"))
(setq n-gesamt (length all-pts))
(setq f (open filepath "w"))
(if (not f)
@@ -372,20 +377,10 @@
(write-line " VERBINDUNGSTYPEN" f)
(write-line "------------------------------------------------" f)
(write-line "" f)
(write-line (strcat " Kreuzungen : " (itoa n-kr)) f)
(write-line (strcat " T-Verbindungen : " (itoa n-tv)) f)
(write-line (strcat " Eckverbindungen : " (itoa n-ek)) f)
(write-line (strcat " Kreuzungen : " (itoa n-kr)) f)
(write-line (strcat " T-Verbindungen : " (itoa n-tv)) f)
(write-line "" f)
(write-line "------------------------------------------------" f)
(write-line " SUMMEN" f)
(write-line "------------------------------------------------" f)
(write-line "" f)
(write-line (strcat " Kreuzungen : " (itoa n-kr)) f)
(write-line (strcat " Kontaktpunkte (T + Eck) : " (itoa n-kontakt)) f)
(write-line (strcat " davon T-Verbindungen : " (itoa n-tv)) f)
(write-line (strcat " davon Eckverbindungen : " (itoa n-ek)) f)
(write-line "" f)
(write-line (strcat " GESAMT : " (itoa n-gesamt)) f)
(write-line (strcat " GESAMT : " (itoa n-gesamt)) f)
(write-line "" f)
(write-line "================================================" f)
(close f)
@@ -514,7 +509,6 @@
(ensure-layer "D-KREUZUNG" 1)
(ensure-layer "D-T_VERBINDUNG" 3)
(ensure-layer "D-ECKVERBINDUNG" 5)
(prompt (strcat "\nLinien gefunden: " (itoa (length lines))))
@@ -536,11 +530,11 @@
(setq typ (cdr result)) ;; Typ — direkt aus find-intersection
(if (not (point-exists pt all-pts tol))
(progn
(setq typ (display-type typ))
(setq all-pts (cons (list (car pt) (cadr pt) typ) all-pts))
(cond
((= typ "Kreuzung") (create-circle pt radius "D-KREUZUNG"))
((= typ "T-Verbindung") (create-circle pt radius "D-T_VERBINDUNG"))
((= typ "Eckverbindung") (create-circle pt radius "D-ECKVERBINDUNG"))
((= typ "Kreuzung") (create-circle pt radius "D-KREUZUNG"))
((= typ "T-Verbindung") (create-circle pt radius "D-T_VERBINDUNG"))
)
)
)
@@ -554,10 +548,9 @@
)
(prompt "\n\n===== ERGEBNIS =====")
(prompt (strcat "\nKreuzungen: " (itoa (count-by-type all-pts "Kreuzung"))))
(prompt (strcat "\nKreuzungen: " (itoa (count-by-type all-pts "Kreuzung"))))
(prompt (strcat "\nT-Verbindungen: " (itoa (count-by-type all-pts "T-Verbindung"))))
(prompt (strcat "\nEckverbindungen: " (itoa (count-by-type all-pts "Eckverbindung"))))
(prompt (strcat "\nGESAMT: " (itoa (length all-pts))))
(prompt (strcat "\nGESAMT: " (itoa (length all-pts))))
;; ── Report schreiben ──────────────────────────────────────
(setq dwg-name