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
|
aktuell-frame nach-aus-pt
|
||||||
gf-nummer last-ent
|
gf-nummer last-ent
|
||||||
L-gf-str delta-l-gf laengen-liste first-l l-item
|
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
|
ein-hz-as rad-h-as rad-v-as xu-entry
|
||||||
sep-endpunkt rad-h-es rad-v-es xu-exit sep-frame
|
sep-endpunkt rad-h-es rad-v-es xu-exit sep-frame
|
||||||
es-aus-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
|
;; delta-l-gf bereits vor der Zusammenfassung berechnet
|
||||||
|
|
||||||
;; Block mit allen Attributen erstellen. Geruest fuer Einzelmodul/
|
;; Block mit allen Attributen erstellen. Geruest fuer Einzelmodul/
|
||||||
@@ -1327,7 +1325,9 @@
|
|||||||
delta-l-gf
|
delta-l-gf
|
||||||
L-gf-str
|
L-gf-str
|
||||||
grade
|
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
|
0
|
||||||
bL90 bL60 bL30
|
bL90 bL60 bL30
|
||||||
bR90 bR60 bR30
|
bR90 bR60 bR30
|
||||||
@@ -1386,7 +1386,7 @@
|
|||||||
;; L-first-seg: Laenge der ersten geraden Staustrecke in mm.
|
;; L-first-seg: Laenge der ersten geraden Staustrecke in mm.
|
||||||
;; Beschriftung: Mitte der ersten Geraden, 400mm senkrecht rechts versetzt.
|
;; Beschriftung: Mitte der ersten Geraden, 400mm senkrecht rechts versetzt.
|
||||||
(defun gf-make-label (gf-nummer hoehe-von hoehe-bis deltaH deltaL
|
(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)
|
label-txt label-pt chz-l shz-l halb basis-winkel)
|
||||||
(setq chz-l (cos (* entry-hz (/ pi 180.0))))
|
(setq chz-l (cos (* entry-hz (/ pi 180.0))))
|
||||||
(setq shz-l (sin (* 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 "H=" (itoa (fix (abs deltaH))) "mm"
|
||||||
" " delta-sym "L=" (itoa (fix deltaL)) "mm"
|
" " delta-sym "L=" (itoa (fix deltaL)) "mm"
|
||||||
" L=[" L-gf-str "]m"
|
" L=[" L-gf-str "]m"
|
||||||
" W=" (rtos (float winkel) 2 2) grad-zeichen
|
" W=" (rtos (float winkel) 2 2) grad-zeichen))
|
||||||
" Sep=" (itoa n-separator)))
|
|
||||||
;; Basiswinkel: Text immer lesbar auf 0 Grad (X-Achse, links->rechts) oder
|
;; Basiswinkel: Text immer lesbar auf 0 Grad (X-Achse, links->rechts) oder
|
||||||
;; 90 Grad (Y-Achse) einrasten - unabhaengig von der tatsaechlichen
|
;; 90 Grad (Y-Achse) einrasten - unabhaengig von der tatsaechlichen
|
||||||
;; Fahrtrichtung (nie 180/270, damit der Text nie auf dem Kopf steht).
|
;; 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))))
|
(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
|
;; Beschriftung: Mitte der ersten Geraden, 400mm senkrecht versetzt
|
||||||
(gf-make-label gf-nummer hoehe-von hoehe-bis deltaH deltaL
|
(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) ->
|
;; TYP: mit Bogen -> "Streckengruppe"; ohne Bogen (einsegmentig) ->
|
||||||
;; "Gefaellestrecke" (reduzierter Attributsatz, siehe ssg-strecke-attrib-defs).
|
;; "Gefaellestrecke" (reduzierter Attributsatz, siehe ssg-strecke-attrib-defs).
|
||||||
(setq typ-str
|
(setq typ-str
|
||||||
@@ -1518,6 +1517,12 @@
|
|||||||
(cons "GF_Bogen_R_90" (itoa bogen-R90))
|
(cons "GF_Bogen_R_90" (itoa bogen-R90))
|
||||||
(cons "GF_Bogen_R_60" (itoa bogen-R60))
|
(cons "GF_Bogen_R_60" (itoa bogen-R60))
|
||||||
(cons "GF_Bogen_R_30" (itoa bogen-R30))
|
(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_SEPARATOR" (itoa n-separator))
|
||||||
(cons "ANZAHL_SCANNER" (itoa n-scanner))
|
(cons "ANZAHL_SCANNER" (itoa n-scanner))
|
||||||
(cons "GERUEST_EINZELMODUL" geruest-einzelmodul)
|
(cons "GERUEST_EINZELMODUL" geruest-einzelmodul)
|
||||||
@@ -1637,7 +1642,9 @@
|
|||||||
(float deltaL-total)
|
(float deltaL-total)
|
||||||
L-gf-str
|
L-gf-str
|
||||||
winkel
|
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
|
0 0 0 0 0 0
|
||||||
startpunkt last-ent nach-aus-pt (float hz) (float L_stau)
|
startpunkt last-ent nach-aus-pt (float hz) (float L_stau)
|
||||||
es-seite geruest-einzelmodul geruest-typ))
|
es-seite geruest-einzelmodul geruest-typ))
|
||||||
|
|||||||
+72
-77
@@ -10,6 +10,13 @@
|
|||||||
;;; Attribute ANZAHL_SCANNER/ANZAHL_SEPARATOR des jeweiligen
|
;;; Attribute ANZAHL_SCANNER/ANZAHL_SEPARATOR des jeweiligen
|
||||||
;;; Carrier-Blocks.
|
;;; Carrier-Blocks.
|
||||||
;;;
|
;;;
|
||||||
|
;;; WICHTIG: Gezaehlt werden ausschliesslich die eigenstaendig
|
||||||
|
;;; platzierten Sensor-Symbole. Der intern in der GF/VF-Kette
|
||||||
|
;;; gezeichnete 300-mm-Block Staustrecke_Separator_SP ist nur ein
|
||||||
|
;;; Ketten-/Uebergabestueck (kein eigenstaendiger Separator) und wird
|
||||||
|
;;; NICHT mitgezaehlt - wer einen Separator gezaehlt haben will, setzt
|
||||||
|
;;; ein Separator_SP/S-LP-Symbol.
|
||||||
|
;;;
|
||||||
;;; Zuordnung eines Sensors zu einem Carrier (Z wird ignoriert):
|
;;; Zuordnung eines Sensors zu einem Carrier (Z wird ignoriert):
|
||||||
;;; 0. Traegt der Sensor bereits ein ZUORDNUNG-Attribut, wird das
|
;;; 0. Traegt der Sensor bereits ein ZUORDNUNG-Attribut, wird das
|
||||||
;;; respektiert (nicht ueberschrieben) - er zaehlt mit, wenn die
|
;;; respektiert (nicht ueberschrieben) - er zaehlt mit, wenn die
|
||||||
@@ -77,14 +84,6 @@
|
|||||||
;; zugeordneten Carriers geschrieben wird.
|
;; zugeordneten Carriers geschrieben wird.
|
||||||
(setq *zuordnung-tag* "ZUORDNUNG")
|
(setq *zuordnung-tag* "ZUORDNUNG")
|
||||||
|
|
||||||
;; Blockname-Muster fuer die INTERN im Carrier-Block (in der Kette)
|
|
||||||
;; gezeichneten Separatoren. Diese bilden einen Teil von
|
|
||||||
;; ANZAHL_SEPARATOR und werden bei jedem Lauf frisch aus der
|
|
||||||
;; Blockdefinition gezaehlt (siehe cs-count-nested) - rein LISP-
|
|
||||||
;; intern, daher (anders als pattern_separator/pattern_scanner) nicht
|
|
||||||
;; in cfg/export.cfg.
|
|
||||||
(setq *intern-separator-pattern* "STAUSTRECKE_SEPARATOR_SP*")
|
|
||||||
|
|
||||||
;; Markierung von Sensoren ohne jeglichen Carrier: Kreis auf eigenem Layer.
|
;; Markierung von Sensoren ohne jeglichen Carrier: Kreis auf eigenem Layer.
|
||||||
(setq *mark-layer* "S_SENSOR_UNZUGEORDNET")
|
(setq *mark-layer* "S_SENSOR_UNZUGEORDNET")
|
||||||
(setq *mark-color* 2) ;; 2 = Gelb
|
(setq *mark-color* 2) ;; 2 = Gelb
|
||||||
@@ -400,35 +399,6 @@
|
|||||||
ok
|
ok
|
||||||
)
|
)
|
||||||
|
|
||||||
;;; ------------------------------------------------------------
|
|
||||||
;;; Zaehlt rekursiv, wie oft ein Block (Muster pat) in der
|
|
||||||
;;; Definition des Blocks bname verwendet wird - inklusive
|
|
||||||
;;; verschachtelter Unterbloecke. Damit wird die interne Anzahl
|
|
||||||
;;; der Kette-Separatoren aus der Geometrie ermittelt.
|
|
||||||
;;; ------------------------------------------------------------
|
|
||||||
(defun cs-count-nested (bname pat / e ed nm n stop)
|
|
||||||
(setq n 0 stop nil)
|
|
||||||
(setq e (tblobjname "BLOCK" bname))
|
|
||||||
(if e
|
|
||||||
(progn
|
|
||||||
(setq e (entnext e))
|
|
||||||
(while (and e (not stop))
|
|
||||||
(setq ed (entget e))
|
|
||||||
(cond
|
|
||||||
((= (cdr (assoc 0 ed)) "ENDBLK") (setq stop t))
|
|
||||||
((= (cdr (assoc 0 ed)) "INSERT")
|
|
||||||
(setq nm (cdr (assoc 2 ed)))
|
|
||||||
(if (wcmatch (strcase nm) pat)
|
|
||||||
(setq n (1+ n))
|
|
||||||
(setq n (+ n (cs-count-nested nm pat)))))
|
|
||||||
)
|
|
||||||
(if (not stop) (setq e (entnext e)))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
n
|
|
||||||
)
|
|
||||||
|
|
||||||
;;; ------------------------------------------------------------
|
;;; ------------------------------------------------------------
|
||||||
;;; Attributwert (String) an einem INSERT lesen. "" wenn nicht
|
;;; Attributwert (String) an einem INSERT lesen. "" wenn nicht
|
||||||
;;; vorhanden. Tag ohne Gross/Klein-Unterscheidung.
|
;;; vorhanden. Tag ohne Gross/Klein-Unterscheidung.
|
||||||
@@ -517,60 +487,82 @@
|
|||||||
;;; Schnelltest: Ist ein vollstaendiger cs-zuordnung-lauf ueberhaupt
|
;;; Schnelltest: Ist ein vollstaendiger cs-zuordnung-lauf ueberhaupt
|
||||||
;;; noetig? Der eigentliche Lauf ist teuer (vla-getboundingbox + Regen
|
;;; noetig? Der eigentliche Lauf ist teuer (vla-getboundingbox + Regen
|
||||||
;;; je Carrier UND je Sensor). Diese Vorpruefung kommt ohne jede
|
;;; je Carrier UND je Sensor). Diese Vorpruefung kommt ohne jede
|
||||||
;;; Bounding-Box aus - sie liest nur Attribute (entget) und zaehlt die
|
;;; Bounding-Box aus - sie liest nur Attribute (entget).
|
||||||
;;; internen Ketten-Separatoren aus der Blockdefinition (cs-count-nested,
|
|
||||||
;;; reine Tabellen-Traversierung, kein Regen).
|
|
||||||
;;;
|
;;;
|
||||||
;;; Rueckgabe T (Lauf noetig), wenn EINE der Bedingungen zutrifft:
|
;;; Rueckgabe T (Lauf noetig), wenn EINE der Bedingungen zutrifft:
|
||||||
;;; a) Ein Scanner-/Separator-Symbol hat ein leeres ZUORDNUNG-Attribut
|
;;; a) Ein Scanner-/Separator-Symbol hat ein leeres ZUORDNUNG-Attribut
|
||||||
;;; (noch nicht zugeordnet).
|
;;; (noch nicht zugeordnet) oder ein ZUORDNUNG, das auf keinen
|
||||||
;;; b) Die Summe der ANZAHL_SCANNER ueber alle Carrier weicht von der
|
;;; (mehr) existierenden Carrier zeigt.
|
||||||
;;; Anzahl der Scanner-Symbole in der Zeichnung ab.
|
;;; b) An einem Carrier passt ANZAHL_SCANNER nicht zur Anzahl der ihm
|
||||||
;;; c) Die Summe der ANZAHL_SEPARATOR ueber alle Carrier weicht von
|
;;; per ZUORDNUNG zugeschriebenen Scanner-Symbole.
|
||||||
;;; (Anzahl Separator-Symbole + interne Ketten-Separatoren) ab.
|
;;; c) An einem Carrier passt ANZAHL_SEPARATOR nicht zur Anzahl der ihm
|
||||||
;;; Sonst nil - die vorhandenen Attribute sind konsistent, der teure
|
;;; per ZUORDNUNG zugeschriebenen Separator-Symbole (nur platzierte
|
||||||
|
;;; Symbole zaehlen - dieselbe Regel wie newP im eigentlichen Lauf;
|
||||||
|
;;; der interne Staustrecke_Separator_SP zaehlt nicht mit).
|
||||||
|
;;; Sonst nil - die gespeicherten Attribute sind konsistent, der teure
|
||||||
;;; Lauf wird uebersprungen.
|
;;; Lauf wird uebersprungen.
|
||||||
;;;
|
;;;
|
||||||
;;; Grenze (bewusst in Kauf genommen): Wird ein Sensor von einem Carrier
|
;;; Die Zuordnung Symbol->Carrier wird hier billig ueber das bereits
|
||||||
;;; zu einem anderen verschoben, OHNE dass sich die GESAMTzahlen aendern
|
;;; gesetzte ZUORDNUNG-Attribut rekonstruiert (Carrier-ID), OHNE die
|
||||||
;;; (z.B. ein Scanner von Kreisel A nach Kreisel B), faellt das hier
|
;;; teure Boundingbox-/Distanz-Rechnung des eigentlichen Laufs. Dadurch
|
||||||
;;; nicht auf - ZUORDNUNG bleibt ja gesetzt und die Summen stimmen
|
;;; erkennt der Test - anders als eine reine Gesamtsummen-Pruefung - auch
|
||||||
;;; weiter. In so einem Fall ZAEHLE_SEP_SCAN manuell aufrufen, um die
|
;;; das Verschieben eines Sensors von einem Carrier zu einem anderen
|
||||||
;;; Zuordnung komplett neu zu berechnen.
|
;;; (die Per-Carrier-Zahl kippt, ZUORDNUNG zeigt aber noch auf den alten).
|
||||||
;;; ------------------------------------------------------------
|
;;; ------------------------------------------------------------
|
||||||
(defun cs-zuordnung-noetig-p ( / ss i ent ed nm sk zuord
|
(defun cs-zuordnung-noetig-p ( / ss i ent ed nm sk zuord id
|
||||||
sumScan sumSep sumIntern nScanSym nSepSym noetig)
|
carriers carrier-ids sensors s
|
||||||
(setq sumScan 0 sumSep 0 sumIntern 0 nScanSym 0 nSepSym 0 noetig nil)
|
sepByCarrier scanByCarrier
|
||||||
|
noetig expScan expSep rec)
|
||||||
|
(setq noetig nil carriers nil carrier-ids nil sensors nil
|
||||||
|
sepByCarrier nil scanByCarrier nil)
|
||||||
(setq ss (ssget "_X" '((0 . "INSERT"))))
|
(setq ss (ssget "_X" '((0 . "INSERT"))))
|
||||||
(if (null ss)
|
(if (null ss)
|
||||||
nil ;; keine Bloecke -> nichts zu tun
|
nil ;; keine Bloecke -> nichts zu tun
|
||||||
(progn
|
(progn
|
||||||
|
;; Pass 1: Carrier (ename . id) und Sensor-Symbole (kind . ZUORDNUNG)
|
||||||
|
;; sammeln - die ssget-Reihenfolge ist beliebig, daher erst sammeln,
|
||||||
|
;; dann auswerten.
|
||||||
(setq i 0)
|
(setq i 0)
|
||||||
(while (< i (sslength ss))
|
(while (< i (sslength ss))
|
||||||
(setq ent (ssname ss i))
|
(setq ent (ssname ss i) ed (entget ent) nm (cdr (assoc 2 ed)))
|
||||||
(setq ed (entget ent))
|
|
||||||
(setq nm (cdr (assoc 2 ed)))
|
|
||||||
(cond
|
(cond
|
||||||
((cs-carrier-p nm)
|
((cs-carrier-p nm)
|
||||||
(setq sumScan (+ sumScan (atoi (cs-get-att-str ent "ANZAHL_SCANNER"))))
|
(setq id (cs-get-att-str ent "ID"))
|
||||||
(setq sumSep (+ sumSep (atoi (cs-get-att-str ent "ANZAHL_SEPARATOR"))))
|
(setq carriers (cons (cons ent id) carriers))
|
||||||
(setq sumIntern (+ sumIntern (cs-count-nested nm *intern-separator-pattern*))))
|
(setq carrier-ids (cons id carrier-ids)))
|
||||||
(t
|
(t
|
||||||
(setq sk (cs-sensor-kind nm))
|
(setq sk (cs-sensor-kind nm))
|
||||||
(if sk
|
(if sk
|
||||||
(progn
|
(setq sensors
|
||||||
(setq zuord (cs-get-att-str ent *zuordnung-tag*))
|
(cons (cons sk (cs-get-att-str ent *zuordnung-tag*)) sensors))))
|
||||||
(if (or (null zuord) (= zuord "")) (setq noetig T))
|
|
||||||
(if (eq sk 'scanner)
|
|
||||||
(setq nScanSym (1+ nScanSym))
|
|
||||||
(setq nSepSym (1+ nSepSym)))))
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
(setq i (1+ i))
|
(setq i (1+ i))
|
||||||
)
|
)
|
||||||
(or noetig
|
;; Pass 2: Symbole ueber ZUORDNUNG je Carrier-ID zaehlen. Leeres
|
||||||
(/= sumScan nScanSym)
|
;; ZUORDNUNG oder ZUORDNUNG auf einen nicht (mehr) existierenden
|
||||||
(/= sumSep (+ sumIntern nSepSym)))
|
;; Carrier -> Lauf noetig.
|
||||||
|
(foreach s sensors
|
||||||
|
(setq sk (car s) zuord (cdr s))
|
||||||
|
(cond
|
||||||
|
((or (null zuord) (= zuord "")) (setq noetig T))
|
||||||
|
((not (member zuord carrier-ids)) (setq noetig T))
|
||||||
|
((eq sk 'scanner) (setq scanByCarrier (cs-bump scanByCarrier zuord)))
|
||||||
|
(t (setq sepByCarrier (cs-bump sepByCarrier zuord)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
;; Pass 3: je Carrier Soll (= zugeschriebene Symbole) gegen die
|
||||||
|
;; gespeicherten Attribute pruefen.
|
||||||
|
(if (not noetig)
|
||||||
|
(foreach rec carriers
|
||||||
|
(setq id (cdr rec)) ;; rec = (ename . carrier-id)
|
||||||
|
(setq expScan (cond ((assoc id scanByCarrier) (cdr (assoc id scanByCarrier))) (t 0)))
|
||||||
|
(setq expSep (cond ((assoc id sepByCarrier) (cdr (assoc id sepByCarrier))) (t 0)))
|
||||||
|
(if (or (/= (atoi (cs-get-att-str (car rec) "ANZAHL_SCANNER")) expScan)
|
||||||
|
(/= (atoi (cs-get-att-str (car rec) "ANZAHL_SEPARATOR")) expSep))
|
||||||
|
(setq noetig T))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
noetig
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -603,7 +595,7 @@
|
|||||||
n-strittig n-zuordnung-fehlt
|
n-strittig n-zuordnung-fehlt
|
||||||
s sent spt res mode rec best-d second-rec second-d
|
s sent spt res mode rec best-d second-rec second-d
|
||||||
scanner-id contested handle
|
scanner-id contested handle
|
||||||
en nm2 ns nsep internSep newS newP okS okP eintrag)
|
en nm2 ns nsep newS newP okS okP eintrag)
|
||||||
(setq carriers nil scanlist nil seplist nil
|
(setq carriers nil scanlist nil seplist nil
|
||||||
n-zuordnung-fehlt 0 n-scan-unassigned 0 n-sep-unassigned 0 n-strittig 0)
|
n-zuordnung-fehlt 0 n-scan-unassigned 0 n-sep-unassigned 0 n-strittig 0)
|
||||||
(setq *cs-scanner-ergaenzt* nil)
|
(setq *cs-scanner-ergaenzt* nil)
|
||||||
@@ -734,16 +726,19 @@
|
|||||||
(setq nm2 (cdr (assoc 2 (entget en))))
|
(setq nm2 (cdr (assoc 2 (entget en))))
|
||||||
(setq ns (cond ((assoc en scanCounts) (cdr (assoc en scanCounts))) (t 0)))
|
(setq ns (cond ((assoc en scanCounts) (cdr (assoc en scanCounts))) (t 0)))
|
||||||
(setq nsep (cond ((assoc en sepCounts) (cdr (assoc en sepCounts))) (t 0)))
|
(setq nsep (cond ((assoc en sepCounts) (cdr (assoc en sepCounts))) (t 0)))
|
||||||
;; interne Kette-Separatoren frisch aus der Blockdefinition zaehlen
|
|
||||||
(setq internSep (cs-count-nested nm2 *intern-separator-pattern*))
|
|
||||||
(setq newS ns)
|
(setq newS ns)
|
||||||
(setq newP (+ internSep nsep))
|
;; ANZAHL_SEPARATOR = nur die tatsaechlich platzierten Separator-
|
||||||
|
;; Symbole (Separator_SP/S-LP), die diesem Carrier zugeordnet sind.
|
||||||
|
;; Der intern in der GF/VF-Kette gezeichnete 300-mm-Block
|
||||||
|
;; Staustrecke_Separator_SP ist nur ein Kettenglied (Foerder-/
|
||||||
|
;; Uebergabestueck), KEIN eigenstaendiger Separator - er wird bewusst
|
||||||
|
;; NICHT mitgezaehlt (Entscheidung: nur platzierte Symbole zaehlen).
|
||||||
|
(setq newP nsep)
|
||||||
(setq okS (cs-set-att en (nth 1 rec) (itoa newS)))
|
(setq okS (cs-set-att en (nth 1 rec) (itoa newS)))
|
||||||
(setq okP (cs-set-att en (nth 2 rec) (itoa newP)))
|
(setq okP (cs-set-att en (nth 2 rec) (itoa newP)))
|
||||||
(if verbose
|
(if verbose
|
||||||
(princ (ssg-textf "sens-carrier-zeile"
|
(princ (ssg-textf "sens-carrier-zeile"
|
||||||
(list nm2 (nth 9 rec) (itoa ns) (itoa internSep) (itoa nsep)
|
(list nm2 (nth 9 rec) (itoa newS) (itoa newP)))))
|
||||||
(itoa newS) (itoa newP)))))
|
|
||||||
(if (not (and okS okP))
|
(if (not (and okS okP))
|
||||||
(princ (ssg-textf "sens-carrier-fehler" (list nm2))))
|
(princ (ssg-textf "sens-carrier-fehler" (list nm2))))
|
||||||
)
|
)
|
||||||
|
|||||||
+1
-1
@@ -516,7 +516,7 @@
|
|||||||
"sens-start": "\n[%1] Pruefe Separator-/Scanner-Zuordnung (ANZAHL_SEPARATOR/ANZAHL_SCANNER)...",
|
"sens-start": "\n[%1] Pruefe Separator-/Scanner-Zuordnung (ANZAHL_SEPARATOR/ANZAHL_SCANNER)...",
|
||||||
"sens-no-inserts": "\n[%1] Keine Bloecke in der Zeichnung gefunden - Sensor-Zuordnung uebersprungen.",
|
"sens-no-inserts": "\n[%1] Keine Bloecke in der Zeichnung gefunden - Sensor-Zuordnung uebersprungen.",
|
||||||
"sens-bbox-fehler": "\n ! Bounding-Box fehlgeschlagen fuer ILS-Block '%1'",
|
"sens-bbox-fehler": "\n ! Bounding-Box fehlgeschlagen fuer ILS-Block '%1'",
|
||||||
"sens-carrier-zeile": "\n %1 [%2]: Scanner(neu)=%3, Separator intern=%4 + manuell=%5 -> ANZAHL_SCANNER=%6, ANZAHL_SEPARATOR=%7",
|
"sens-carrier-zeile": "\n %1 [%2]: ANZAHL_SCANNER=%3, ANZAHL_SEPARATOR=%4 (nur platzierte Symbole)",
|
||||||
"sens-carrier-fehler": "\n FEHLER beim Schreiben der Anzahl-Attribute an %1",
|
"sens-carrier-fehler": "\n FEHLER beim Schreiben der Anzahl-Attribute an %1",
|
||||||
"sens-summary": "\n[%1] %2 Kreisel/Streckengruppen/Gefaellestrecken aktualisiert, %3 Scanner gesamt (%4 nicht zuordenbar), %5 Separator gesamt (%6 nicht zuordenbar).",
|
"sens-summary": "\n[%1] %2 Kreisel/Streckengruppen/Gefaellestrecken aktualisiert, %3 Scanner gesamt (%4 nicht zuordenbar), %5 Separator gesamt (%6 nicht zuordenbar).",
|
||||||
"sens-ergaenzt-header": "\n[%1] %2 Scanner ausserhalb jeder Kreisel-/Strecken-Boundingbox per Abstand automatisch zugeordnet:",
|
"sens-ergaenzt-header": "\n[%1] %2 Scanner ausserhalb jeder Kreisel-/Strecken-Boundingbox per Abstand automatisch zugeordnet:",
|
||||||
|
|||||||
+1
-1
@@ -516,7 +516,7 @@
|
|||||||
"sens-start": "\n[%1] Checking separator/scanner assignment (ANZAHL_SEPARATOR/ANZAHL_SCANNER)...",
|
"sens-start": "\n[%1] Checking separator/scanner assignment (ANZAHL_SEPARATOR/ANZAHL_SCANNER)...",
|
||||||
"sens-no-inserts": "\n[%1] No blocks found in the drawing - sensor assignment skipped.",
|
"sens-no-inserts": "\n[%1] No blocks found in the drawing - sensor assignment skipped.",
|
||||||
"sens-bbox-fehler": "\n ! Bounding box failed for ILS block '%1'",
|
"sens-bbox-fehler": "\n ! Bounding box failed for ILS block '%1'",
|
||||||
"sens-carrier-zeile": "\n %1 [%2]: Scanner(new)=%3, Separator internal=%4 + manual=%5 -> ANZAHL_SCANNER=%6, ANZAHL_SEPARATOR=%7",
|
"sens-carrier-zeile": "\n %1 [%2]: ANZAHL_SCANNER=%3, ANZAHL_SEPARATOR=%4 (placed symbols only)",
|
||||||
"sens-carrier-fehler": "\n ERROR writing the count attributes on %1",
|
"sens-carrier-fehler": "\n ERROR writing the count attributes on %1",
|
||||||
"sens-summary": "\n[%1] %2 Kreisel/Streckengruppen/Gefaellestrecken updated, %3 scanners total (%4 unassignable), %5 separators total (%6 unassignable).",
|
"sens-summary": "\n[%1] %2 Kreisel/Streckengruppen/Gefaellestrecken updated, %3 scanners total (%4 unassignable), %5 separators total (%6 unassignable).",
|
||||||
"sens-ergaenzt-header": "\n[%1] %2 scanners outside every Kreisel/track bounding box auto-assigned by distance:",
|
"sens-ergaenzt-header": "\n[%1] %2 scanners outside every Kreisel/track bounding box auto-assigned by distance:",
|
||||||
|
|||||||
Reference in New Issue
Block a user