CONNECTION_INSERT/EDIT: Attributnamen wie die Bloecke aus sps_skel
Die Befehle schrieben ID/FROM_ID/TO_ID und lasen den Markernamen aus TRO_ID - Attribute, die CONNECTION_ARROW und die TRO-Marker von tro_annotate nicht haben (ssg-attrib-set-on ueberspringt sie still). Jetzt UID/FROM_UID/TO_UID und Markername aus ID; alte Namen werden mitgelesen und mitgeschrieben. Rueckweg nach sps_skel: tro_annotate --read-tros (edit_connections). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+40
-14
@@ -8,13 +8,22 @@
|
|||||||
;; TRO11 ----------> TRO14
|
;; TRO11 ----------> TRO14
|
||||||
;; ID 0062 ID 0065
|
;; ID 0062 ID 0065
|
||||||
;;
|
;;
|
||||||
;; Attribute des Verbindungsblocks:
|
;; Attribute des Verbindungsblocks (wie sps_skel lib/tro_annotate.py sie
|
||||||
;; ID unsichtbar - eindeutige interne Nummer (ID-Raum von SSG_LIB)
|
;; anlegt):
|
||||||
;; FROM_ID unsichtbar - interne ID der Quelle
|
;; UID unsichtbar - eindeutige interne Nummer (ID-Raum von SSG_LIB)
|
||||||
;; TO_ID unsichtbar - interne ID des Ziels
|
;; FROM_UID unsichtbar - interne Nummer (UID) des Quell-Markers
|
||||||
;; FROM_TRO sichtbar - sprechender Name der Quelle
|
;; TO_UID unsichtbar - interne Nummer (UID) des Ziel-Markers
|
||||||
;; TO_TRO sichtbar - sprechender Name des Ziels
|
;; FROM_TRO unsichtbar - sprechender Name der Quelle (Attribut ID des Markers)
|
||||||
;; KIND unsichtbar - flow | colocated
|
;; TO_TRO unsichtbar - sprechender Name des Ziels
|
||||||
|
;; KIND unsichtbar - flow | weiche
|
||||||
|
;; Aeltere Bloecke trugen ID/FROM_ID/TO_ID - gelesen wird beides, geschrieben
|
||||||
|
;; wird in beide Namen (ssg-attrib-set-on ueberspringt fehlende Attribute).
|
||||||
|
;;
|
||||||
|
;; Zurueck nach sps_skel: tro_annotate --read-tros liest die Verbindungsbloecke
|
||||||
|
;; mit; ein Ende wird erst ueber den Namen (FROM_TRO/TO_TRO), sonst ueber die
|
||||||
|
;; UID einem Marker zugeordnet. Hinzugefuegte und geloeschte Bloecke werden zu
|
||||||
|
;; [<csv>.edit_connections] in cfg/tro_overrides.ini. Eine Verbindung loescht
|
||||||
|
;; man mit ihrem Block (Pfeil-Geometrie allein zaehlt nicht).
|
||||||
;;
|
;;
|
||||||
;; Warum interne IDs: der sprechende Name darf sich aendern (TRO_EDIT), die
|
;; Warum interne IDs: der sprechende Name darf sich aendern (TRO_EDIT), die
|
||||||
;; interne ID nicht. Ein DXF-Export kann die Beziehung damit eindeutig
|
;; interne ID nicht. Ein DXF-Export kann die Beziehung damit eindeutig
|
||||||
@@ -45,10 +54,20 @@
|
|||||||
(if wert wert "")
|
(if wert wert "")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
;; Erstes nicht leeres Attribut aus einer Liste von Tags (neu vor alt)
|
||||||
|
(defun con-attrib-1 (ent tags / wert)
|
||||||
|
(setq wert "")
|
||||||
|
(foreach tag tags
|
||||||
|
(if (= wert "") (setq wert (con-attrib ent tag)))
|
||||||
|
)
|
||||||
|
wert
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
;; ------------------------------------------------------------
|
;; ------------------------------------------------------------
|
||||||
;; Einen TRO-Marker waehlen; liefert (ename interne-ID sprechender-Name)
|
;; Einen TRO-Marker waehlen; liefert (ename interne-ID sprechender-Name)
|
||||||
;; oder nil bei Abbruch bzw. falschem Block.
|
;; oder nil bei Abbruch bzw. falschem Block. Marker von sps_skel tragen die
|
||||||
|
;; interne Nummer in UID und den Namen in ID (aeltere: ID und TRO_ID).
|
||||||
;; ------------------------------------------------------------
|
;; ------------------------------------------------------------
|
||||||
(defun con-pick-tro (prompt-key / sel ent bname)
|
(defun con-pick-tro (prompt-key / sel ent bname)
|
||||||
(setq sel (entsel (ssg-text prompt-key)))
|
(setq sel (entsel (ssg-text prompt-key)))
|
||||||
@@ -59,7 +78,9 @@
|
|||||||
bname (cdr (assoc 2 (entget ent))))
|
bname (cdr (assoc 2 (entget ent))))
|
||||||
(if (not (wcmatch bname "TRO_*"))
|
(if (not (wcmatch bname "TRO_*"))
|
||||||
(progn (alert (ssg-textf "con-kein-tro" (list bname))) nil)
|
(progn (alert (ssg-textf "con-kein-tro" (list bname))) nil)
|
||||||
(list ent (con-attrib ent "ID") (con-attrib ent "TRO_ID"))
|
(if (/= (con-attrib ent "UID") "")
|
||||||
|
(list ent (con-attrib ent "UID") (con-attrib ent "ID"))
|
||||||
|
(list ent (con-attrib ent "ID") (con-attrib-1 ent '("TRO_ID" "ID"))))
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -130,7 +151,10 @@
|
|||||||
;; Eindeutige interne ID im ID-Raum von SSG_LIB
|
;; Eindeutige interne ID im ID-Raum von SSG_LIB
|
||||||
(setq neue-id (ssg-id-format (1+ (ssg-id-max))))
|
(setq neue-id (ssg-id-format (1+ (ssg-id-max))))
|
||||||
(ssg-attrib-set-on ent-neu
|
(ssg-attrib-set-on ent-neu
|
||||||
(list (cons "ID" neue-id)
|
(list (cons "UID" neue-id)
|
||||||
|
(cons "ID" neue-id)
|
||||||
|
(cons "FROM_UID" (cadr von))
|
||||||
|
(cons "TO_UID" (cadr nach))
|
||||||
(cons "FROM_ID" (cadr von))
|
(cons "FROM_ID" (cadr von))
|
||||||
(cons "TO_ID" (cadr nach))
|
(cons "TO_ID" (cadr nach))
|
||||||
(cons "FROM_TRO" (caddr von))
|
(cons "FROM_TRO" (caddr von))
|
||||||
@@ -183,8 +207,8 @@
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
(setq alt-from-id (con-attrib ent "FROM_ID")
|
(setq alt-from-id (con-attrib-1 ent '("FROM_UID" "FROM_ID"))
|
||||||
alt-to-id (con-attrib ent "TO_ID")
|
alt-to-id (con-attrib-1 ent '("TO_UID" "TO_ID"))
|
||||||
alt-from (con-attrib ent "FROM_TRO")
|
alt-from (con-attrib ent "FROM_TRO")
|
||||||
alt-to (con-attrib ent "TO_TRO")
|
alt-to (con-attrib ent "TO_TRO")
|
||||||
alt-kind (con-attrib ent "KIND"))
|
alt-kind (con-attrib ent "KIND"))
|
||||||
@@ -199,7 +223,7 @@
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
(set_tile "blockname" (ssg-textf "con-block" (list bname (con-attrib ent "ID"))))
|
(set_tile "blockname" (ssg-textf "con-block" (list bname (con-attrib-1 ent '("UID" "ID")))))
|
||||||
(set_tile "from_id" alt-from-id)
|
(set_tile "from_id" alt-from-id)
|
||||||
(set_tile "from_tro" alt-from)
|
(set_tile "from_tro" alt-from)
|
||||||
(set_tile "to_id" alt-to-id)
|
(set_tile "to_id" alt-to-id)
|
||||||
@@ -233,7 +257,9 @@
|
|||||||
(alert (ssg-text "con-gleiche-id"))
|
(alert (ssg-text "con-gleiche-id"))
|
||||||
(progn
|
(progn
|
||||||
(ssg-attrib-set-on ent
|
(ssg-attrib-set-on ent
|
||||||
(list (cons "FROM_ID" neu-from-id)
|
(list (cons "FROM_UID" neu-from-id)
|
||||||
|
(cons "TO_UID" neu-to-id)
|
||||||
|
(cons "FROM_ID" neu-from-id)
|
||||||
(cons "TO_ID" neu-to-id)
|
(cons "TO_ID" neu-to-id)
|
||||||
(cons "FROM_TRO" neu-from)
|
(cons "FROM_TRO" neu-from)
|
||||||
(cons "TO_TRO" neu-to)
|
(cons "TO_TRO" neu-to)
|
||||||
|
|||||||
+9
-1
@@ -862,9 +862,17 @@ Verbindungslinien zwischen zwei Punkten/Bausteinen fuer SPS-Dokumentation.
|
|||||||
|
|
||||||
| Befehl | Beschreibung |
|
| Befehl | Beschreibung |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| `c:CONNECTION_INSERT` | Verbindung zwischen zwei Punkten einfuegen (Laenge/Winkel/Mitte werden berechnet) |
|
| `c:CONNECTION_INSERT` | Verbindung zwischen zwei TRO-Markern einfuegen (Laenge/Winkel/Mitte werden berechnet) |
|
||||||
| `c:CONNECTION_EDIT` | Bestehende Verbindung bearbeiten |
|
| `c:CONNECTION_EDIT` | Bestehende Verbindung bearbeiten |
|
||||||
|
|
||||||
|
Der Block `CONNECTION_ARROW` traegt `UID`, `FROM_UID`/`TO_UID` (Attribut `UID`
|
||||||
|
der Marker), `FROM_TRO`/`TO_TRO` (Attribut `ID` der Marker) und `KIND` - die
|
||||||
|
Namen, die `sps_skel`/`lib/tro_annotate.py` anlegt (bis 2026-10-27 schrieben die
|
||||||
|
Befehle `ID`/`FROM_ID`/`TO_ID`, die dieser Block nicht hat). Zurueck nach
|
||||||
|
sps_skel: `tro_annotate --read-tros` vergleicht die Bloecke mit der Ableitung
|
||||||
|
und schreibt hinzugefuegte/geloeschte Verbindungen nach `cfg/tro_overrides.ini`
|
||||||
|
(`[<csv>.edit_connections]`). Eine Verbindung loescht man mit ihrem Block.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### `DrawPlanquadrate.lsp` – Planquadrat-Raster
|
### `DrawPlanquadrate.lsp` – Planquadrat-Raster
|
||||||
|
|||||||
Reference in New Issue
Block a user