Files
dxfmakros/Lisp/SSG_LIB_Commands.lsp
T

237 lines
5.7 KiB
Common Lisp

;; ============================================================
;; SSG_LIB - Dummy-Befehlsdefinitionen fuer Menue SSG_LIB
;; Jeder Befehl gibt eine Meldung aus und kann spaeter
;; durch echte Funktionalitaet ersetzt werden.
;; ============================================================
;; --- ILS / Zusatzmodul ---
(defun c:ILS_BTMT_Beladung ()
(princ "\n[DUMMY] ILS_BTMT_Beladung aufgerufen")
(princ)
)
(defun c:ILS_BTMT_Entladung ()
(princ "\n[DUMMY] ILS_BTMT_Entladung aufgerufen")
(princ)
)
;; --- ILS / Foerderer ---
(defun c:ILS_ETF_Etagenfoerderer ()
(princ "\n[DUMMY] ILS_ETF_Etagenfoerderer aufgerufen")
(princ)
)
(defun c:ILS_TEF_Strecke ()
(princ "\n[DUMMY] ILS_TEF_Strecke aufgerufen")
(princ)
)
;; FOERDERANLAGE ist bereits in VarioFoerderer.lsp definiert
;; Kurven angetrieben Aussen
(defun c:ILS_K90LA ()
(princ "\n[DUMMY] 90 Kurve links angetrieben Aussen")
(princ)
)
(defun c:ILS_K90RA ()
(princ "\n[DUMMY] 90 Kurve rechts angetrieben Aussen")
(princ)
)
(defun c:ILS_K60LA ()
(princ "\n[DUMMY] 60 Kurve links angetrieben Aussen")
(princ)
)
(defun c:ILS_K60RA ()
(princ "\n[DUMMY] 60 Kurve rechts angetrieben Aussen")
(princ)
)
(defun c:ILS_K30LA ()
(princ "\n[DUMMY] 30 Kurve links angetrieben Aussen")
(princ)
)
(defun c:ILS_K30RA ()
(princ "\n[DUMMY] 30 Kurve rechts angetrieben Aussen")
(princ)
)
;; Kurven angetrieben Innen
(defun c:ILS_K90LI ()
(princ "\n[DUMMY] 90 Kurve links angetrieben Innen")
(princ)
)
(defun c:ILS_K90RI ()
(princ "\n[DUMMY] 90 Kurve rechts angetrieben Innen")
(princ)
)
(defun c:ILS_K60LI ()
(princ "\n[DUMMY] 60 Kurve links angetrieben Innen")
(princ)
)
(defun c:ILS_K60RI ()
(princ "\n[DUMMY] 60 Kurve rechts angetrieben Innen")
(princ)
)
(defun c:ILS_K30LI ()
(princ "\n[DUMMY] 30 Kurve links angetrieben Innen")
(princ)
)
(defun c:ILS_K30RI ()
(princ "\n[DUMMY] 30 Kurve rechts angetrieben Innen")
(princ)
)
;; --- ILS / Gefaellestrecke ---
(defun c:ILS_Gefaellestrecke ()
(princ "\n[DUMMY] ILS_Gefaellestrecke aufgerufen")
(princ)
)
(defun c:ILS_GK90L ()
(princ "\n[DUMMY] 90 Kurve links Gefaellestrecke")
(princ)
)
(defun c:ILS_GK90R ()
(princ "\n[DUMMY] 90 Kurve rechts Gefaellestrecke")
(princ)
)
(defun c:ILS_GK60L ()
(princ "\n[DUMMY] 60 Kurve links Gefaellestrecke")
(princ)
)
(defun c:ILS_GK60R ()
(princ "\n[DUMMY] 60 Kurve rechts Gefaellestrecke")
(princ)
)
(defun c:ILS_GK30L ()
(princ "\n[DUMMY] 30 Kurve links Gefaellestrecke")
(princ)
)
(defun c:ILS_GK30R ()
(princ "\n[DUMMY] 30 Kurve rechts Gefaellestrecke")
(princ)
)
;; ============================================================
;; SSG_DIM_SWITCH - Umschalten zwischen 2D und 3D Bloecken
;; Setzt DXFM_DIM, DXFM_BLOCKS und DXFM_OMNIFLO neu
;; ============================================================
(defun c:SSG_DIM_SWITCH ( / dim-neu basis)
(setq dim-neu (if (equal (strcase (getenv "DXFM_DIM")) "3D") "2D" "3D"))
(setq basis (getenv "DXFMAKRO"))
(setenv "DXFM_DIM" dim-neu)
(setenv "DXFM_BLOCKS" (strcat basis "\\data\\ils\\" dim-neu))
(setenv "DXFM_OMNIFLO" (strcat basis "\\data\\omniflo\\" dim-neu))
(princ (strcat "\nModus umgeschaltet auf: " dim-neu))
(princ (strcat "\n DXFM_BLOCKS = " (getenv "DXFM_BLOCKS")))
(princ (strcat "\n DXFM_OMNIFLO = " (getenv "DXFM_OMNIFLO")))
(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)
;; Block ermitteln: zuerst Implied Selection, dann Picking
(setq ss (ssget "I"))
(if (or (null ss) (/= (sslength ss) 1))
(progn
(princ "\nBlock auswaehlen: ")
(setq ss (ssget ":S" '((0 . "INSERT"))))
)
)
(if (null ss)
(progn
(princ "\nKein Block ausgewaehlt.")
(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 -> natives EATTEDIT (Attribut-Editor)
(t
(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)