From 2d4cb1cc36db8d72bb52aa53af5e3371473c74dd Mon Sep 17 00:00:00 2001 From: Simon Hensch Date: Wed, 24 Jun 2026 09:11:47 +0200 Subject: [PATCH] =?UTF-8?q?[FIX]=20Men=C3=BC=20zur=20Bearbeitung=20des=20K?= =?UTF-8?q?reisels=20durch=20Doppelklick=20auf=20einen=20Kreisel=20wird=20?= =?UTF-8?q?nun=20wie=20erwartet=20aufgerufen,=20andere=20Bl=C3=B6cke=20und?= =?UTF-8?q?=20Textfelder=20und=20Objekte=20k=C3=B6nnen=20nun=20trotzdem=20?= =?UTF-8?q?wie=20gewohnt=20durch=20einen=20Doppelklick=20mit=20den=20integ?= =?UTF-8?q?rierten=20Bricscad=20Funktionen=20bearbeitet=20werden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Lisp/SSG_LIB_Commands.lsp | 35 +++++++++++++++++++++++++---------- bin/on_start.lsp | 4 ++-- menu/SSG_LIB.mnl | 2 +- menu/SSG_LIB.mnu | 5 +++++ 4 files changed, 33 insertions(+), 13 deletions(-) diff --git a/Lisp/SSG_LIB_Commands.lsp b/Lisp/SSG_LIB_Commands.lsp index 127bf4b..ecf692c 100644 --- a/Lisp/SSG_LIB_Commands.lsp +++ b/Lisp/SSG_LIB_Commands.lsp @@ -133,18 +133,17 @@ ;; ============================================================ (defun c:SSG_BLOCKEDIT ( / ss ent ed bname attribs teileart) - ;; Implied Selection pruefen (Block muss vorselektiert sein) + ;; Block ermitteln: zuerst Implied Selection, dann Picking (setq ss (ssget "I")) - (if (null ss) + (if (or (null ss) (/= (sslength ss) 1)) (progn - (princ "\nBitte zuerst einen Block auswaehlen.") - (princ) - (exit) + (princ "\nBlock auswaehlen: ") + (setq ss (ssget ":S" '((0 . "INSERT")))) ) ) - (if (/= (sslength ss) 1) + (if (null ss) (progn - (princ "\nBitte genau einen Block auswaehlen.") + (princ "\nKein Block ausgewaehlt.") (princ) (exit) ) @@ -191,14 +190,30 @@ (c:OMNI_EDIT) ) - ;; Unbekannter Blocktyp -> Standard BEDIT + ;; Unbekannter Blocktyp -> natives EATTEDIT (Attribut-Editor) (t - (princ (strcat "\nBlock bearbeiten (BEDIT): " bname)) - (command "_.BEDIT" bname) + (princ (strcat "\nAttribute bearbeiten: " bname)) + (command "_.EATTEDIT") ) ) (princ) ) +;; ============================================================ +;; C:EATTEDIT - Abfangen des eingebauten Doppelklick-Befehls +;; UNDEFINE zwingt BricsCAD, auch interne Aufrufe ueber LISP +;; zu leiten. Fallback auf _.EATTEDIT (Dot-Prefix = nativ, +;; kein Loop) fuer unbekannte Bloecke. +;; ============================================================ +(defun c:EATTEDIT () + (c:SSG_BLOCKEDIT) +) +(if (not *ssg-eattedit-undefined*) + (progn + (command "_.UNDEFINE" "EATTEDIT") + (setq *ssg-eattedit-undefined* t) + ) +) + (princ "\nSSG_LIB_Commands.lsp geladen - Dummy-Befehle registriert.") (princ) diff --git a/bin/on_start.lsp b/bin/on_start.lsp index ffba9c5..9c1263a 100644 --- a/bin/on_start.lsp +++ b/bin/on_start.lsp @@ -103,8 +103,8 @@ (princ "\n[SSG_LIB] WARNUNG: DXFMAKRO nicht gesetzt, Menue nicht geladen!") ) - ;; DBLCLKEDIT deaktivieren (Block-Editor nicht bei Doppelklick oeffnen) - (setvar "DBLCLKEDIT" 0) + ;; DBLCLKEDIT=1: Doppelklick aktiv, ***DOUBLECLICK-Eintraege steuern Block-Verhalten + (setvar "DBLCLKEDIT" 1) (dbgflush) diff --git a/menu/SSG_LIB.mnl b/menu/SSG_LIB.mnl index 5abecfc..4a1f9b6 100644 --- a/menu/SSG_LIB.mnl +++ b/menu/SSG_LIB.mnl @@ -125,7 +125,7 @@ ;; Pulldown-Menue in die Menueleiste einhaengen (menucmd "P13=+SSG_LIB.POP1") - (setvar "DBLCLKEDIT" 0) + (setvar "DBLCLKEDIT" 1) (princ "\n[SSG_LIB] Alle Module geladen. Menue aktiv.") ) (princ "\n[SSG_LIB] WARNUNG: DXFM_LISP nicht gesetzt - Befehle nicht verfuegbar.") diff --git a/menu/SSG_LIB.mnu b/menu/SSG_LIB.mnu index f4ad81c..1c2fb4c 100644 --- a/menu/SSG_LIB.mnu +++ b/menu/SSG_LIB.mnu @@ -126,6 +126,11 @@ ***DOUBLECLICK [INSERT]^C^C(ssg-ensure "SSG_LIB_Commands") SSG_BLOCKEDIT +[MTEXT]^C^CDDEDIT +[TEXT]^C^CDDEDIT +[ATTDEF]^C^CDDEDIT +[HATCH]^C^CHATCHEDIT +[DIMENSION]^C^CDDEDIT ***POP501 [SSG_LIB Edit Context]