Contextmenü für die Rechte Maustaste eingeführt um Elemente zu bearbeiten
This commit is contained in:
@@ -126,5 +126,79 @@
|
||||
(princ)
|
||||
)
|
||||
|
||||
;; ============================================================
|
||||
;; SSG_BLOCKEDIT - Kontextmenue-Dispatcher
|
||||
;; Erkennt den selektierten Blocktyp und ruft den passenden
|
||||
;; Bearbeitungsbefehl auf (Rechtsklick-Kontextmenue).
|
||||
;; ============================================================
|
||||
|
||||
(defun c:SSG_BLOCKEDIT ( / ss ent ed bname attribs teileart)
|
||||
;; Implied Selection pruefen (Block muss vorselektiert sein)
|
||||
(setq ss (ssget "I"))
|
||||
(if (null ss)
|
||||
(progn
|
||||
(princ "\nBitte zuerst einen Block auswaehlen.")
|
||||
(princ)
|
||||
(exit)
|
||||
)
|
||||
)
|
||||
(if (/= (sslength ss) 1)
|
||||
(progn
|
||||
(princ "\nBitte genau einen Block auswaehlen.")
|
||||
(princ)
|
||||
(exit)
|
||||
)
|
||||
)
|
||||
|
||||
(setq ent (ssname ss 0))
|
||||
(setq ed (entget ent))
|
||||
|
||||
(if (/= (cdr (assoc 0 ed)) "INSERT")
|
||||
(progn
|
||||
(princ "\nKein Block ausgewaehlt.")
|
||||
(princ)
|
||||
(exit)
|
||||
)
|
||||
)
|
||||
|
||||
(setq bname (cdr (assoc 2 ed)))
|
||||
|
||||
(cond
|
||||
;; Kreisel-Bloecke -> KreiselEdit
|
||||
((wcmatch bname "KREISEL_*")
|
||||
(princ (strcat "\nKreisel bearbeiten: " bname))
|
||||
(c:KreiselEdit)
|
||||
)
|
||||
|
||||
;; Eckrad-Bloecke -> BEDIT (kein eigener Edit-Dialog in LISP)
|
||||
((wcmatch bname "ECKRAD_*")
|
||||
(princ (strcat "\nEckrad bearbeiten: " bname))
|
||||
(command "_.BEDIT" bname)
|
||||
)
|
||||
|
||||
;; Omniflo-Bloecke -> OMNI_EDIT
|
||||
;; Erkennung: TEILEART-Attribut vorhanden, AP110-Blockname oder rein numerisch
|
||||
((progn
|
||||
(setq attribs (ssg-attrib-read ent))
|
||||
(setq teileart (cdr (assoc "TEILEART" attribs)))
|
||||
(or
|
||||
teileart
|
||||
(wcmatch (strcase bname) "AP110*,AP_110*,APG110*")
|
||||
(wcmatch bname "#*")
|
||||
)
|
||||
)
|
||||
(princ (strcat "\nOmniflo Element bearbeiten: " bname))
|
||||
(c:OMNI_EDIT)
|
||||
)
|
||||
|
||||
;; Unbekannter Blocktyp -> Standard BEDIT
|
||||
(t
|
||||
(princ (strcat "\nBlock bearbeiten (BEDIT): " bname))
|
||||
(command "_.BEDIT" bname)
|
||||
)
|
||||
)
|
||||
(princ)
|
||||
)
|
||||
|
||||
(princ "\nSSG_LIB_Commands.lsp geladen - Dummy-Befehle registriert.")
|
||||
(princ)
|
||||
|
||||
+12
-15
@@ -11,14 +11,14 @@ Vorgehen pro DXF-Datei:
|
||||
3. Neue ATTDEFs gemaess cfg/attradd.cfg und JSON-Daten einfuegen.
|
||||
Attributwerte werden aus omniflo_boegen.json / omniflo_weichen.json
|
||||
aufgeloest; der Layer-Name kommt aus dem [layer]-Abschnitt der Config.
|
||||
4. Alle Entities (Geometrie + ATTDEFs) in eine Blockdefinition verschieben.
|
||||
Der Blockname entspricht der Sivasnummer (= Dateiname ohne .dxf).
|
||||
Als Basispunkt der Blockdefinition wird $INSBASE aus dem DXF-Header
|
||||
verwendet (gesetzt von set_einfuegepkt.py).
|
||||
5. Im Modelspace einen INSERT auf den neuen Block einfuegen, mit
|
||||
ATTRIB-Entities befuellt aus den ATTDEF-Standardwerten. Dadurch zeigt
|
||||
BricsCAD beim Klick auf den Block alle Attributwerte an.
|
||||
6. Ergebnis in results/omniflo/<sivasnr>.dxf speichern.
|
||||
4. Ergebnis in results/omniflo/<sivasnr>.dxf speichern.
|
||||
|
||||
Hinweis zur Blockstruktur:
|
||||
Die Geometrie und ATTDEFs verbleiben direkt im Modelspace (flache Struktur).
|
||||
BricsCAD erstellt beim Einfuegen via LISP (_.INSERT <sivasnr>.dxf) automatisch
|
||||
einen Block mit dem Dateinamen (= Sivasnr) und befuellt die ATTDEFs mit den
|
||||
Standardwerten als ATTRIBs. Jedes eingefuegte Element wird als eigenstaendiger
|
||||
Block im Ziel-DWG referenziert.
|
||||
|
||||
Voraussetzung:
|
||||
Die Quelldateien in data/omniflo/ sollten bereits durch set_einfuegepkt.py
|
||||
@@ -219,6 +219,7 @@ def wrap_entities_in_block(doc, block_name):
|
||||
dxfattribs={
|
||||
"layer": attdef.dxf.layer,
|
||||
"height": attdef.dxf.height,
|
||||
"flags": attdef.dxf.flags,
|
||||
},
|
||||
)
|
||||
|
||||
@@ -226,9 +227,8 @@ def wrap_entities_in_block(doc, block_name):
|
||||
def add_attdefs_to_dxf(dxf_path, output_path, attr_defs, json_entry, sivasnr,
|
||||
layer_value=""):
|
||||
"""
|
||||
Oeffnet eine DXF-Datei, fuegt ATTDEF-Entities in den Modelspace ein,
|
||||
fasst alle Entities anschliessend in einen Block mit dem Namen sivasnr
|
||||
zusammen und speichert das Ergebnis.
|
||||
Oeffnet eine DXF-Datei, fuegt ATTDEF-Entities in den Modelspace ein
|
||||
und speichert das Ergebnis.
|
||||
|
||||
attr_defs: Liste von (TAG, source_expression) aus der Config
|
||||
json_entry: Dict mit den JSON-Daten fuer dieses Element
|
||||
@@ -266,15 +266,12 @@ def add_attdefs_to_dxf(dxf_path, output_path, attr_defs, json_entry, sivasnr,
|
||||
"height": ATTDEF_HEIGHT,
|
||||
"insert": (0, y_pos),
|
||||
"prompt": prompt,
|
||||
"flags": 0, # sichtbar
|
||||
"flags": 3, # unsichtbar (1) + konstant (2)
|
||||
},
|
||||
)
|
||||
y_pos += ATTDEF_SPACING
|
||||
count += 1
|
||||
|
||||
# Alle Entities (Geometrie + ATTDEFs) in Block mit Sivasnr-Namen fassen
|
||||
wrap_entities_in_block(doc, sivasnr)
|
||||
|
||||
doc.saveas(output_path)
|
||||
return count
|
||||
|
||||
|
||||
+4
-1
@@ -118,4 +118,7 @@
|
||||
|
||||
***POP501
|
||||
[SSG_LIB Edit Context]
|
||||
[SSG Bearbeiten]^C^CSSG_BLOCKEDIT
|
||||
[Kreisel bearbeiten]^C^CKreiselEdit
|
||||
[Omniflo Element bearbeiten]^C^COMNI_EDIT
|
||||
[--]
|
||||
[SSG Bearbeiten (Auto)]^C^CSSG_BLOCKEDIT
|
||||
|
||||
Reference in New Issue
Block a user