;; ============================================================ ;; 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_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)