Separatoren zaehlen: nur platzierte Symbole, interne Kettenglieder nicht
Der intern in der GF/VF-Kette gezeichnete 300-mm-Block Staustrecke_Separator_SP ist ein Foerder-/Uebergabestueck, kein eigenstaendiger Separator. Er wurde bisher als Separator mitgezaehlt (ANZAHL_SEPARATOR = intern + platzierte Symbole), wodurch eine GF mit einem darauf gelegten S-LP-Symbol faelschlich 2 statt 1 ergab. count_sep_scan.lsp: ANZAHL_SEPARATOR zaehlt jetzt nur noch die platzierten Separator_SP/S-LP-Symbole (newP = nsep). Schnelltest cs-zuordnung-noetig-p entsprechend auf reine Symbolzahl je Carrier umgestellt. Die interne Zaehlung (cs-count-nested, *intern-separator-pattern*, internSep) entfaellt. Gefaellestrecke.lsp: GF-Bau setzt ANZAHL_SEPARATOR beim Erstellen mit 0 vor (interne Kettenseparatoren zaehlen nicht) - die echte Anzahl fuellt der Export aus den platzierten Symbolen. Label "Sep=N" entfernt (waere sonst immer 0 bzw. widerspraeche dem Export). n-bogen-gf/gf-make-label entsprechend bereinigt. Hinweis: tests/reference/gefaellestrecke_tests_export.csv (Anzahl_Separator=1 ohne platzierte Symbole) wird dadurch stale -> per TEST_EXPORT_ALL in BricsCAD neu erzeugen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -993,7 +993,7 @@
|
||||
aktuell-frame nach-aus-pt
|
||||
gf-nummer last-ent
|
||||
L-gf-str delta-l-gf laengen-liste first-l l-item
|
||||
bL90 bL60 bL30 bR90 bR60 bR30 n-bogen-gf
|
||||
bL90 bL60 bL30 bR90 bR60 bR30
|
||||
ein-hz-as rad-h-as rad-v-as xu-entry
|
||||
sep-endpunkt rad-h-es rad-v-es xu-exit sep-frame
|
||||
es-aus-frame
|
||||
@@ -1312,8 +1312,6 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(setq n-bogen-gf (+ bL90 bL60 bL30 bR90 bR60 bR30))
|
||||
|
||||
;; delta-l-gf bereits vor der Zusammenfassung berechnet
|
||||
|
||||
;; Block mit allen Attributen erstellen. Geruest fuer Einzelmodul/
|
||||
@@ -1327,7 +1325,9 @@
|
||||
delta-l-gf
|
||||
L-gf-str
|
||||
grade
|
||||
(1+ n-bogen-gf)
|
||||
;; n-separator/n-scanner = 0: interne Ketten-Separatoren zaehlen nicht;
|
||||
;; die echte Anzahl setzt der Export aus platzierten Symbolen.
|
||||
0
|
||||
0
|
||||
bL90 bL60 bL30
|
||||
bR90 bR60 bR30
|
||||
@@ -1386,7 +1386,7 @@
|
||||
;; L-first-seg: Laenge der ersten geraden Staustrecke in mm.
|
||||
;; Beschriftung: Mitte der ersten Geraden, 400mm senkrecht rechts versetzt.
|
||||
(defun gf-make-label (gf-nummer hoehe-von hoehe-bis deltaH deltaL
|
||||
L-gf-str winkel n-separator nach-aus-pt entry-hz L-first-seg /
|
||||
L-gf-str winkel nach-aus-pt entry-hz L-first-seg /
|
||||
label-txt label-pt chz-l shz-l halb basis-winkel)
|
||||
(setq chz-l (cos (* entry-hz (/ pi 180.0))))
|
||||
(setq shz-l (sin (* entry-hz (/ pi 180.0))))
|
||||
@@ -1401,8 +1401,7 @@
|
||||
" " delta-sym "H=" (itoa (fix (abs deltaH))) "mm"
|
||||
" " delta-sym "L=" (itoa (fix deltaL)) "mm"
|
||||
" L=[" L-gf-str "]m"
|
||||
" W=" (rtos (float winkel) 2 2) grad-zeichen
|
||||
" Sep=" (itoa n-separator)))
|
||||
" W=" (rtos (float winkel) 2 2) grad-zeichen))
|
||||
;; Basiswinkel: Text immer lesbar auf 0 Grad (X-Achse, links->rechts) oder
|
||||
;; 90 Grad (Y-Achse) einrasten - unabhaengig von der tatsaechlichen
|
||||
;; Fahrtrichtung (nie 180/270, damit der Text nie auf dem Kopf steht).
|
||||
@@ -1439,7 +1438,7 @@
|
||||
(if (null geruest-typ) (setq geruest-typ (ssg-geruest-idx-to-typ (ssg-geruest-typ-to-idx nil))))
|
||||
;; Beschriftung: Mitte der ersten Geraden, 400mm senkrecht versetzt
|
||||
(gf-make-label gf-nummer hoehe-von hoehe-bis deltaH deltaL
|
||||
L-gf-str winkel n-separator nach-aus-pt entry-hz L-first-seg)
|
||||
L-gf-str winkel nach-aus-pt entry-hz L-first-seg)
|
||||
;; TYP: mit Bogen -> "Streckengruppe"; ohne Bogen (einsegmentig) ->
|
||||
;; "Gefaellestrecke" (reduzierter Attributsatz, siehe ssg-strecke-attrib-defs).
|
||||
(setq typ-str
|
||||
@@ -1518,6 +1517,12 @@
|
||||
(cons "GF_Bogen_R_90" (itoa bogen-R90))
|
||||
(cons "GF_Bogen_R_60" (itoa bogen-R60))
|
||||
(cons "GF_Bogen_R_30" (itoa bogen-R30))
|
||||
;; ANZAHL_SEPARATOR/ANZAHL_SCANNER werden beim Bau mit 0 vorbelegt
|
||||
;; (n-separator/n-scanner werden von den Aufrufern als 0 uebergeben):
|
||||
;; der intern gezeichnete Ketten-Separator Staustrecke_Separator_SP zaehlt
|
||||
;; NICHT als Separator. Die tatsaechliche Anzahl ermittelt der Export aus
|
||||
;; den platzierten Separator_SP/S-LP-/Scanner-Symbolen und schreibt sie
|
||||
;; hier hinein (cs-zuordnung-lauf in count_sep_scan.lsp).
|
||||
(cons "ANZAHL_SEPARATOR" (itoa n-separator))
|
||||
(cons "ANZAHL_SCANNER" (itoa n-scanner))
|
||||
(cons "GERUEST_EINZELMODUL" geruest-einzelmodul)
|
||||
@@ -1637,7 +1642,9 @@
|
||||
(float deltaL-total)
|
||||
L-gf-str
|
||||
winkel
|
||||
1 0
|
||||
;; n-separator/n-scanner = 0: der interne Ketten-Separator zaehlt nicht;
|
||||
;; die echte Anzahl setzt der Export aus platzierten Symbolen (s.o.).
|
||||
0 0
|
||||
0 0 0 0 0 0
|
||||
startpunkt last-ent nach-aus-pt (float hz) (float L_stau)
|
||||
es-seite geruest-einzelmodul geruest-typ))
|
||||
|
||||
Reference in New Issue
Block a user