JAM_EDIT: Feld Kapazitaet (Attribut CAPACITY) fuer DB_JamArea aus sps_skel

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-28 13:52:52 +01:00
parent 767e47980b
commit 32bf548838
7 changed files with 62 additions and 9 deletions
+46 -5
View File
@@ -9,6 +9,12 @@
;; (stabiler Schluessel, nicht aendern)
;; AREA unsichtbar - Kennung der TRO-JSON (J0039)
;; AUTO unsichtbar - von sps_skel abgeleitete Nummer NNNN_k
;; KEY unsichtbar - stabiler Schluessel fuer --read-jams
;; CAPACITY unsichtbar - Kapazitaet (Traegerplaetze), leer = offen;
;; wird nCapacityMax/nCapacitySet und der Wert
;; der Konstante cJam<NNNN>_<k> im DB_JamArea<NNNN>
;;
;; Alte Zeichnungen ohne CAPACITY: Feld gesperrt, Hinweis - neu beschriften.
;;
;; Aufruf JAM_EDIT:
;; - Doppelklick auf den Staubereich -> ***DOUBLECLICK [INSERT] -> SSG_BLOCKEDIT
@@ -18,8 +24,11 @@
;; "JAM_*" hierher.
;;
;; Der Dialog aendert nur die Zeichnung. In die SCL kommt die Aenderung mit
;; tro_annotate.bat --file <csv> --read-jams (-> cfg/<csv>_jam_names.ini)
;; tro_annotate.bat --file <csv> --read-jams (-> cfg/<csv>_jam_names.ini,
;; [jam] und [capacity])
;; scl_skeleton.bat --json <csv>_anlage.json --templates
;; (-> <csv>_FB_Main.scl, <csv>_DB_JamArea.scl,
;; <csv>_JamArea_Konstanten.xlsx)
;;
;; Setzt ssg_core.lsp (ssg-start/ssg-end, ssg-attrib-*) und ssg_lang.lsp voraus.
;; ============================================================
@@ -33,6 +42,26 @@
)
;; ------------------------------------------------------------
;; Ein Attribut setzen, auch auf "" (ssg-attrib-set-on laesst leere
;; Werte aus - eine geloeschte Kapazitaet muss aber leer werden)
;; ------------------------------------------------------------
(defun jam-attrib-setzen (ent tag wert / obj ed fertig)
(setq obj (entnext ent) fertig nil)
(while (and obj (not fertig))
(setq ed (entget obj))
(cond
((= (cdr (assoc 0 ed)) "SEQEND") (setq fertig t))
((and (= (cdr (assoc 0 ed)) "ATTRIB") (= (strcase (cdr (assoc 2 ed))) tag))
(entmod (subst (cons 1 wert) (assoc 1 ed) ed))
(entupd obj)
(setq fertig t))
)
(setq obj (entnext obj))
)
)
;; ------------------------------------------------------------
;; Name aus Foerderer und Nummer: "0054" "3" -> "Jam0054_3"
;; ------------------------------------------------------------
@@ -73,6 +102,7 @@
(defun c:JAM_EDIT ( / ss ent ed bname attribs
alt-conv alt-nr auto tro entry area
neu-conv neu-nr auto-conv auto-nr pos
alt-kap neu-kap hat-kap
dcl-pfad dat ergebnis name andere)
;; Implied Selection VOR ssg-start pruefen (ssg-start hebt Selektion auf)
@@ -112,7 +142,9 @@
auto (cond ((cdr (assoc "AUTO" attribs))) (""))
tro (cond ((cdr (assoc "TRO" attribs))) ("?"))
entry (cond ((cdr (assoc "ENTRY" attribs))) ("?"))
area (cond ((cdr (assoc "AREA" attribs))) ("?")))
area (cond ((cdr (assoc "AREA" attribs))) ("?"))
hat-kap (assoc "CAPACITY" attribs)
alt-kap (cond ((cdr hat-kap)) ("")))
;; AUTO "0054_3" -> Foerderer "0054", Nummer "3"
(setq auto-conv "" auto-nr "")
@@ -135,17 +167,21 @@
(set_tile "bereich" (ssg-textf "jam-edit-bereich" (list area tro entry)))
(set_tile "auto" (ssg-textf "jam-edit-auto"
(list (if (= auto "") "-" (jam-name auto-conv auto-nr)))))
(set_tile "hinweis" (ssg-text "jam-edit-hinweis"))
(set_tile "hinweis" (ssg-text (if hat-kap "jam-edit-hinweis" "jam-edit-ohne-kapazitaet")))
(set_tile "conveyor" alt-conv)
(set_tile "number" alt-nr)
(set_tile "capacity" alt-kap)
(if (= auto "") (mode_tile "reset" 1))
;; alte Zeichnung: Block ohne CAPACITY - nichts, wohin der Wert koennte
(if (not hat-kap) (mode_tile "capacity" 1))
(setq neu-conv alt-conv neu-nr alt-nr)
(setq neu-conv alt-conv neu-nr alt-nr neu-kap alt-kap)
(action_tile "reset"
"(set_tile \"conveyor\" auto-conv) (set_tile \"number\" auto-nr)")
(action_tile "accept"
(strcat "(setq neu-conv (vl-string-trim \" \" (get_tile \"conveyor\"))"
" neu-nr (vl-string-trim \" \" (get_tile \"number\")))"
" neu-nr (vl-string-trim \" \" (get_tile \"number\"))"
" neu-kap (vl-string-trim \" \" (get_tile \"capacity\")))"
"(done_dialog 1)"))
(action_tile "cancel" "(done_dialog 0)")
@@ -159,12 +195,17 @@
(alert (ssg-text "jam-edit-foerderer-ungueltig")))
((not (and (jam-ziffern-p neu-nr) (> (atoi neu-nr) 0)))
(alert (ssg-text "jam-edit-nummer-ungueltig")))
((not (or (= neu-kap "") (and (jam-ziffern-p neu-kap) (> (atoi neu-kap) 0))))
(alert (ssg-text "jam-edit-kapazitaet-ungueltig")))
(t
(setq neu-nr (itoa (atoi neu-nr))
name (jam-name neu-conv neu-nr))
(ssg-attrib-set-on ent (list (cons "CONVEYOR" neu-conv)
(cons "NUMBER" neu-nr)
(cons "NAME" name)))
(if hat-kap
(jam-attrib-setzen ent "CAPACITY"
(if (= neu-kap "") "" (itoa (atoi neu-kap)))))
(entupd ent)
(princ (ssg-textf "jam-edit-gespeichert" (list name area)))
(if (setq andere (jam-name-belegt name ent))