lisp dbg library um ein paar Einträge gefixt. dbg lib wird geladen und initalisiert. .dbg file erscheint im logs Ordner. Fix zu den verlorenden Attributen des Kreisels
This commit is contained in:
+41
-11
@@ -295,7 +295,22 @@
|
||||
;; WICHTIG: Vor dem Zeichnen den aktuellen letzten Entity merken
|
||||
;; Aber wenn die Zeichnung leer ist, setzen wir lastEnt auf nil
|
||||
(if (setq lastEnt (entlast))
|
||||
(princ) ;; Letzte Entity existiert
|
||||
(progn
|
||||
;; Falls lastEnt ein INSERT mit Attributen ist, muessen wir
|
||||
;; bis zum SEQEND navigieren, da entnext sonst in die
|
||||
;; ATTRIB-Sub-Entities hineinlaeuft
|
||||
(if (and (= (cdr (assoc 0 (entget lastEnt))) "INSERT")
|
||||
(= (cdr (assoc 66 (entget lastEnt))) 1))
|
||||
(progn
|
||||
(setq lastEnt (entnext lastEnt))
|
||||
(while (and lastEnt
|
||||
(/= (cdr (assoc 0 (entget lastEnt))) "SEQEND"))
|
||||
(setq lastEnt (entnext lastEnt))
|
||||
)
|
||||
;; lastEnt ist jetzt SEQEND - entnext darauf gibt das naechste Top-Level-Entity
|
||||
)
|
||||
)
|
||||
)
|
||||
(setq lastEnt nil) ;; Zeichnung ist leer
|
||||
)
|
||||
|
||||
@@ -955,20 +970,14 @@
|
||||
|
||||
|
||||
;; --------------------------------------------
|
||||
;; ILS_Eckrad: Einzelnen AN8-Block einfuegen
|
||||
;;
|
||||
;; Fuegt den Block AN8.dwg an einem gewaehlten Punkt
|
||||
;; mit waehlbarer Rotation ein (Eckrad / Umlenkrad).
|
||||
;; ILS_Eckrad: Befehl - fragt Eingaben ab und fuegt Eckrad ein
|
||||
;; --------------------------------------------
|
||||
(defun c:ILS_Eckrad ( / pt rotStr rotation)
|
||||
|
||||
(ssg-start "Eckrad einfuegen" '(("ATTREQ") ("ATTDIA")))
|
||||
(setvar "ATTREQ" 0)
|
||||
(setvar "ATTDIA" 0)
|
||||
(dbgf "c:ILS_Eckrad")
|
||||
|
||||
;; 1. Einfuegepunkt
|
||||
(setq pt (getpoint "\nEinfuegepunkt Eckrad: "))
|
||||
(if (null pt) (progn (ssg-end) (exit)))
|
||||
(if (null pt) (progn (dbgreturn nil) (exit)))
|
||||
|
||||
;; 2. Rotation
|
||||
(setq rotStr (getstring "\nRotation in Grad <0>: "))
|
||||
@@ -977,13 +986,34 @@
|
||||
(setq rotation (atof rotStr))
|
||||
)
|
||||
|
||||
;; 3. AN8 einfuegen
|
||||
;; 3. Einfuegen
|
||||
(ils-eckrad-insert pt rotation)
|
||||
(dbgreturn nil)
|
||||
)
|
||||
|
||||
;; --------------------------------------------
|
||||
;; ils-eckrad-insert: Fuegt AN8-Block an Punkt mit Rotation ein
|
||||
;; Parameter:
|
||||
;; pt - Einfuegepunkt (Liste x y [z])
|
||||
;; rotation - Drehwinkel in Grad
|
||||
;; --------------------------------------------
|
||||
(defun ils-eckrad-insert (pt rotation)
|
||||
(dbgf "ils-eckrad-insert")
|
||||
(dbg 'pt)
|
||||
(dbg 'rotation)
|
||||
|
||||
(ssg-start "Eckrad einfuegen" '(("ATTREQ") ("ATTDIA")))
|
||||
(setvar "ATTREQ" 0)
|
||||
(setvar "ATTDIA" 0)
|
||||
|
||||
(dbgp (strcat "INSERT Block: " *block-path* "AN8.dwg"))
|
||||
(command "_.INSERT" (strcat *block-path* "AN8.dwg") pt 1 1 rotation)
|
||||
|
||||
(princ (strcat "\nEckrad eingefuegt bei "
|
||||
(rtos (car pt) 2 1) "," (rtos (cadr pt) 2 1)
|
||||
" Rotation=" (rtos rotation 2 1)))
|
||||
(ssg-end)
|
||||
(dbgreturn nil)
|
||||
)
|
||||
|
||||
;; NEU: KreiselLabelSetup - Hier einfügen!
|
||||
|
||||
+77
-46
@@ -12,31 +12,27 @@
|
||||
;; (dbgp "text") - Debug-Print (Alias fuer dbgmsg)
|
||||
;; (dbgmsg "text") - Freitext-Nachricht loggen
|
||||
;;
|
||||
;; Strategie: dbgf/dbg/dbgmsg puffern im Speicher.
|
||||
;; dbgreturn flusht den Puffer auf die Platte (open/append/close).
|
||||
;; So hat jede Funktion mindestens einen Schreibvorgang,
|
||||
;; ohne dass jeder einzelne dbg-Aufruf die Datei oeffnet.
|
||||
;;
|
||||
;; dbgon/dbgoff steuert, ob Ausgaben geschrieben werden.
|
||||
;; Damit kann man gezielt nur bestimmte Abschnitte debuggen.
|
||||
;; Ein (dbgoff) VOR (dbgopen) verhindert das Anlegen der Datei.
|
||||
;;
|
||||
;; Beispiel:
|
||||
;; (dbgopen "test.dbg")
|
||||
;; (dbgoff) ; ab hier keine Ausgabe
|
||||
;; (dbgf "unwichtig") ; wird NICHT geschrieben
|
||||
;; (dbgreturn 0)
|
||||
;; (dbgon) ; ab hier wieder Ausgabe
|
||||
;; (dbgopen "test.dbg" "DXFM_LOG")
|
||||
;; (dbgf "meine-funktion")
|
||||
;; (dbg 'x)
|
||||
;; (dbgreturn ergebnis)
|
||||
;; (dbgreturn ergebnis) ; <-- hier wird alles geschrieben
|
||||
;; (dbgclose)
|
||||
;;
|
||||
;; Erzeugt z.B.:
|
||||
;; meine-funktion(){
|
||||
;; x=42
|
||||
;; } = 99
|
||||
;; ============================================================
|
||||
|
||||
;; Globale Variablen
|
||||
(setq *dbg-file* nil) ; Datei-Handle
|
||||
(setq *dbg-path* nil) ; Voller Dateipfad (String)
|
||||
(setq *dbg-indent* 0) ; Aktuelle Einruecktiefe
|
||||
(setq *dbg-active* T) ; Debug-Ausgabe aktiv (Standard: ein)
|
||||
(setq *dbg-buffer* nil) ; Zeilenpuffer (Liste von Strings)
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; DBGON - Debug-Ausgabe aktivieren
|
||||
@@ -54,6 +50,33 @@
|
||||
(princ)
|
||||
)
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; DBG-FLUSH - Puffer auf Platte schreiben (open/append/close)
|
||||
;; ------------------------------------------------------------
|
||||
(defun dbg-flush (/ fh)
|
||||
(if (and *dbg-path* *dbg-buffer*)
|
||||
(progn
|
||||
(setq fh (open *dbg-path* "a"))
|
||||
(if fh
|
||||
(progn
|
||||
(foreach line (reverse *dbg-buffer*)
|
||||
(write-line line fh)
|
||||
)
|
||||
(close fh)
|
||||
)
|
||||
)
|
||||
(setq *dbg-buffer* nil)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; DBG-BUFWRITE - Zeile in den Puffer schreiben
|
||||
;; ------------------------------------------------------------
|
||||
(defun dbg-bufwrite (line)
|
||||
(setq *dbg-buffer* (cons line *dbg-buffer*))
|
||||
)
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; DBGOPEN - Debug-Datei oeffnen
|
||||
;; Wenn *dbg-active* nil ist, wird keine Datei angelegt.
|
||||
@@ -62,12 +85,8 @@
|
||||
;; envvar - Optional: Name einer Umgebungsvariable fuer das
|
||||
;; Zielverzeichnis (z.B. "DXFM_LOG").
|
||||
;; Wenn nil oder nicht gesetzt, wird "." verwendet.
|
||||
;; Aufruf:
|
||||
;; (dbgopen "test.dbg" "DXFM_LOG") -> C:\...\log\test.dbg
|
||||
;; (dbgopen "test.dbg" nil) -> .\test.dbg
|
||||
;; (dbgopen "test.dbg") -> .\test.dbg
|
||||
;; ------------------------------------------------------------
|
||||
(defun dbgopen (filename envvar / dir fullpath ts)
|
||||
(defun dbgopen (filename envvar / dir fullpath fh ts)
|
||||
(if (not *dbg-active*)
|
||||
(progn
|
||||
(prompt "\n[DBG] Debug deaktiviert - keine Datei angelegt.")
|
||||
@@ -85,22 +104,31 @@
|
||||
(if (or (not dir) (= dir ""))
|
||||
(setq dir ".")
|
||||
)
|
||||
;; Pfad zusammenbauen (Backslash am Ende sicherstellen)
|
||||
;; Backslash am Ende sicherstellen
|
||||
(if (and (/= (substr dir (strlen dir) 1) "\\")
|
||||
(/= (substr dir (strlen dir) 1) "/"))
|
||||
(setq dir (strcat dir "\\"))
|
||||
)
|
||||
;; Verzeichnis anlegen falls es nicht existiert
|
||||
(if (not (vl-file-directory-p (vl-string-right-trim "\\/" dir)))
|
||||
(progn
|
||||
(vl-mkdir (vl-string-right-trim "\\/" dir))
|
||||
(prompt (strcat "\n[DBG] Verzeichnis angelegt: " dir))
|
||||
)
|
||||
)
|
||||
(setq fullpath (strcat dir filename))
|
||||
(prompt (strcat "\n[DBG] Oeffne: " fullpath))
|
||||
(if *dbg-file* (close *dbg-file*))
|
||||
(setq *dbg-file* (open fullpath "w"))
|
||||
(setq *dbg-indent* 0)
|
||||
(if *dbg-file*
|
||||
;; Datei mit "w" erstellen/leeren, Header schreiben, sofort schliessen
|
||||
(setq fh (open fullpath "w"))
|
||||
(if fh
|
||||
(progn
|
||||
;; Timestamp sicher erzeugen (menucmd kann nil liefern)
|
||||
(setq *dbg-path* fullpath)
|
||||
(setq *dbg-indent* 0)
|
||||
(setq *dbg-buffer* nil)
|
||||
(setq ts (menucmd "M=$(edtime,$(getvar,date),YYYY-MO-DD HH:MM:SS)"))
|
||||
(if (not ts) (setq ts "(kein Zeitstempel)"))
|
||||
(write-line (strcat "=== DEBUG START " ts " ===") *dbg-file*)
|
||||
(write-line (strcat "=== DEBUG START " ts " ===") fh)
|
||||
(close fh)
|
||||
(prompt (strcat "\n[DBG] Debug-Datei geoeffnet: " fullpath))
|
||||
)
|
||||
(prompt (strcat "\n[DBG] FEHLER: Konnte Debug-Datei nicht oeffnen: " fullpath))
|
||||
@@ -111,16 +139,16 @@
|
||||
)
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; DBGCLOSE - Debug-Datei schliessen
|
||||
;; DBGCLOSE - Debug-Datei schliessen (Puffer + Abschluss schreiben)
|
||||
;; ------------------------------------------------------------
|
||||
(defun dbgclose ( / ts)
|
||||
(if *dbg-file*
|
||||
(if *dbg-path*
|
||||
(progn
|
||||
(setq ts (menucmd "M=$(edtime,$(getvar,date),YYYY-MO-DD HH:MM:SS)"))
|
||||
(if (not ts) (setq ts "(kein Zeitstempel)"))
|
||||
(write-line (strcat "=== DEBUG ENDE " ts " ===") *dbg-file*)
|
||||
(close *dbg-file*)
|
||||
(setq *dbg-file* nil)
|
||||
(dbg-bufwrite (strcat "=== DEBUG ENDE " ts " ==="))
|
||||
(dbg-flush)
|
||||
(setq *dbg-path* nil)
|
||||
(setq *dbg-indent* 0)
|
||||
(prompt "\n[DBG] Debug-Datei geschlossen.")
|
||||
)
|
||||
@@ -132,8 +160,8 @@
|
||||
;; ------------------------------------------------------------
|
||||
;; DBG-TABS - Hilfsfunktion: Erzeugt Einrueckung
|
||||
;; ------------------------------------------------------------
|
||||
(defun dbg-tabs (/ result i)
|
||||
(setq result "" i 0)
|
||||
(defun dbg-tabs (/ result)
|
||||
(setq result "")
|
||||
(repeat *dbg-indent*
|
||||
(setq result (strcat result "\t"))
|
||||
)
|
||||
@@ -173,13 +201,13 @@
|
||||
)
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; DBGF - Funktionseintritt loggen
|
||||
;; DBGF - Funktionseintritt loggen (puffert nur)
|
||||
;; Schreibt "funktionsname(){" und erhoeht Einrueckung
|
||||
;; ------------------------------------------------------------
|
||||
(defun dbgf (funcname)
|
||||
(if (and *dbg-file* *dbg-active*)
|
||||
(if (and *dbg-path* *dbg-active*)
|
||||
(progn
|
||||
(write-line (strcat (dbg-tabs) funcname "(){") *dbg-file*)
|
||||
(dbg-bufwrite (strcat (dbg-tabs) funcname "(){"))
|
||||
(setq *dbg-indent* (1+ *dbg-indent*))
|
||||
)
|
||||
)
|
||||
@@ -187,43 +215,46 @@
|
||||
)
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; DBGRETURN - Funktionsaustritt loggen
|
||||
;; DBGRETURN - Funktionsaustritt loggen + FLUSH auf Platte
|
||||
;; Verringert Einrueckung und schreibt "} = wert"
|
||||
;; ------------------------------------------------------------
|
||||
(defun dbgreturn (retval)
|
||||
(if (and *dbg-file* *dbg-active*)
|
||||
(if (and *dbg-path* *dbg-active*)
|
||||
(progn
|
||||
(setq *dbg-indent* (max 0 (1- *dbg-indent*)))
|
||||
(write-line (strcat (dbg-tabs) "} = " (dbg-tostring retval)) *dbg-file*)
|
||||
(if retval
|
||||
(dbg-bufwrite (strcat (dbg-tabs) "} = " (dbg-tostring retval)))
|
||||
(dbg-bufwrite (strcat (dbg-tabs) "}"))
|
||||
)
|
||||
(dbg-flush)
|
||||
)
|
||||
)
|
||||
(princ)
|
||||
)
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; DBG - Variable/Wert loggen
|
||||
;; Schreibt "<tabs> name='wert'"
|
||||
;; DBG - Variable/Wert loggen (puffert nur)
|
||||
;; Aufruf: (dbg 'varname) oder (dbg wert)
|
||||
;; ------------------------------------------------------------
|
||||
(defun dbg (varname / val)
|
||||
(if (and *dbg-file* *dbg-active*)
|
||||
(if (and *dbg-path* *dbg-active*)
|
||||
(if (= (type varname) 'SYM)
|
||||
(progn
|
||||
(setq val (eval varname))
|
||||
(write-line (strcat (dbg-tabs) (vl-symbol-name varname) "=" (dbg-tostring val)) *dbg-file*)
|
||||
(dbg-bufwrite (strcat (dbg-tabs) (vl-symbol-name varname) "=" (dbg-tostring val)))
|
||||
)
|
||||
(write-line (strcat (dbg-tabs) "value=" (dbg-tostring varname)) *dbg-file*)
|
||||
(dbg-bufwrite (strcat (dbg-tabs) "value=" (dbg-tostring varname)))
|
||||
)
|
||||
)
|
||||
(princ)
|
||||
)
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; DBGMSG - Freitext-Nachricht loggen
|
||||
;; DBGMSG - Freitext-Nachricht loggen (puffert nur)
|
||||
;; ------------------------------------------------------------
|
||||
(defun dbgmsg (msg)
|
||||
(if (and *dbg-file* *dbg-active*)
|
||||
(write-line (strcat (dbg-tabs) ">> " msg) *dbg-file*)
|
||||
(if (and *dbg-path* *dbg-active*)
|
||||
(dbg-bufwrite (strcat (dbg-tabs) ">> " msg))
|
||||
)
|
||||
(princ)
|
||||
)
|
||||
|
||||
+3
-1
@@ -21,6 +21,8 @@
|
||||
)
|
||||
)
|
||||
(load (strcat base-path "ssg_core.lsp") "ssg_core.lsp nicht gefunden")
|
||||
(load (strcat base-path "ssg_dbg.lsp") "ssg_dbg.lsp nicht gefunden")
|
||||
(dbgopen "debugfile.dbg" "DXFM_LOG") ; Debug-Datei im Log-Verzeichnis oeffnen
|
||||
(load (strcat base-path "ssg_dialog.lsp") "ssg_dialog.lsp nicht gefunden")
|
||||
(load (strcat base-path "ssg_layer.lsp") "ssg_layer.lsp nicht gefunden")
|
||||
(load (strcat base-path "KreiselInsert.lsp") "KreiselInsert.lsp nicht gefunden")
|
||||
@@ -28,7 +30,7 @@
|
||||
(load (strcat base-path "tests.lsp") "tests.lsp nicht gefunden")
|
||||
(load (strcat base-path "OmniModulInsert.lsp") "OmniModulInsert.lsp nicht gefunden")
|
||||
(load (strcat base-path "SSG_LIB_Commands.lsp") "SSG_LIB_Commands.lsp nicht gefunden")
|
||||
(prompt "\nSSG-Bibliotheken geladen: ssg_core, ssg_dialog, ssg_layer")
|
||||
(prompt "\nSSG-Bibliotheken geladen: ssg_core, ssg_dbg, ssg_dialog, ssg_layer")
|
||||
(princ)
|
||||
)
|
||||
|
||||
|
||||
+2
-1
@@ -17,7 +17,7 @@ set "DXFM_LIB=%DXFMAKRO%\lib"
|
||||
set "DXFM_DATA=%DXFMAKRO%\data"
|
||||
set "DXFM_TESTS=%DXFMAKRO%\tests"
|
||||
set "DXFM_CFG=%DXFMAKRO%\cfg"
|
||||
set "DXFM_LOG=%DXFMAKRO%\log"
|
||||
set "DXFM_LOG=%DXFMAKRO%\logs"
|
||||
set "DXFM_BLOCKS=%DXFMAKRO%\Blocks"
|
||||
set "DXFM_LISP=%DXFMAKRO%\Lisp"
|
||||
set "DXFM_DCL=%DXFMAKRO%\dcl"
|
||||
@@ -40,6 +40,7 @@ if not exist "%DXFM_LIB%" mkdir "%DXFM_LIB%"
|
||||
if not exist "%DXFM_DATA%" mkdir "%DXFM_DATA%"
|
||||
if not exist "%DXFM_BLOCKS%" mkdir "%DXFM_BLOCKS%"
|
||||
if not exist "%DXFM_LISP%" mkdir "%DXFM_LISP%"
|
||||
if not exist "%DXFM_LOG%" mkdir "%DXFM_LOG%"
|
||||
if not exist "%DXFM_RESULTS%" mkdir "%DXFM_RESULTS%"
|
||||
|
||||
REM Umgebungsvariablen anzeigen
|
||||
|
||||
Reference in New Issue
Block a user