Skip to content

Commit

Permalink
cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
lugenx committed Oct 2, 2024
1 parent d303b0c commit cc4bb02
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 52 deletions.
82 changes: 41 additions & 41 deletions commands/flayer.lsp
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,18 @@

(defun c::flayer ( / input-layer layer-name layer-list counter key-list key-char page layers-per-page layer-names total-pages all-layer-names layer-map user-input max-layer-name-length start-index end-index current-layers i)
(setq input-layer (getstring "\nEnter layer name or partial name to filter: "))
(setq input-layer (strcase input-layer)) ; Convert input to uppercase for case-insensitive comparison
(textscr) ; Open the text screen after entering the filter
(setq layer-list (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))) ; Get all layers
(setq input-layer (strcase input-layer))
(textscr)
(setq layer-list (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))))
(setq counter 0)
(setq layers-per-page 15)
(setq key-list '("A" "S" "D" "F" "J" "K" "L" "G" "H" "W" "E" "R" "U" "I" "O" "P")) ; List of keys with "A"
(setq key-list '("A" "S" "D" "F" "J" "K" "L" "G" "H" "W" "E" "R" "U" "I" "O" "P"))
(setq all-layer-names '())
(setq layer-map '())
(setq max-layer-name-length 0)

(vlax-for layer layer-list
(setq layer-name (strcase (vla-get-name layer))) ; Convert layer name to uppercase for case-insensitive comparison
(setq layer-name (strcase (vla-get-name layer)))
(if (wcmatch layer-name (strcat "*" input-layer "*"))
(progn
(setq all-layer-names (append all-layer-names (list layer-name)))
Expand All @@ -31,8 +31,8 @@
(setq page 1)

(defun show-page ()
(setq current-layer (strcase (getvar "CLAYER"))) ; Get the current layer each time the page is shown
(princ "\n") ; Add a line break before displaying the page content
(setq current-layer (strcase (getvar "CLAYER")))
(princ "\n")
(setq start-index (* (1- page) layers-per-page))
(setq end-index (min (length all-layer-names) (* page layers-per-page)))
(setq current-layers '())
Expand All @@ -41,29 +41,29 @@
(setq current-layers (append current-layers (list (nth i all-layer-names))))
(setq i (1+ i))
)
(setq layer-map '()) ; Reset layer map for each cycle
(setq layer-map '())
(if (> total-pages 1)
(princ (strcat "\nPage " (itoa page) "/" (itoa total-pages) ":\n\n"))
(princ "\n")
)
(princ "[A] All\n\n") ; Add [A] All at the top with line breaks
(princ "[A] All\n\n")
(setq counter 0)
(while (< counter (length current-layers))
(setq key-char (nth (1+ counter) key-list)) ; Get the corresponding key character, skipping "A"
(setq layer (vla-item layer-list (nth counter current-layers))) ; Get the layer object
(setq key-char (nth (1+ counter) key-list))
(setq layer (vla-item layer-list (nth counter current-layers)))
(setq status "")
(setq status (strcat "("
(if (= (vla-get-layeron layer) :vlax-true) "On" "Off") ", " ; Layer on/off status
(if (= (vla-get-lock layer) :vlax-true) "Locked" "Unlocked") ", " ; Layer lock/unlock status
(if (= (vla-get-freeze layer) :vlax-true) "Frozen" "Unfrozen") ", " ; Layer freeze/unfreeze status
(if (= (vla-get-plottable layer) :vlax-true) "Plottable" "Not Plottable") ; Layer plot/not plot status
(if (= (vla-get-layeron layer) :vlax-true) "On" "Off") ", "
(if (= (vla-get-lock layer) :vlax-true) "Locked" "Unlocked") ", "
(if (= (vla-get-freeze layer) :vlax-true) "Frozen" "Unfrozen") ", "
(if (= (vla-get-plottable layer) :vlax-true) "Plottable" "Not Plottable")
")"))
(setq layer-name-display (nth counter current-layers))
(if (equal layer-name-display current-layer)
(setq layer-name-display (strcat layer-name-display "*")))
(setq layer-map (cons (cons key-char (nth counter current-layers)) layer-map)) ; Map the key to the layer name
(princ (strcat "[" key-char "] " layer-name-display (make-spaces (- (+ max-layer-name-length 3) (strlen layer-name-display))) status "\n")) ; Align the status
(setq counter (1+ counter)) ; Increment the counter
(setq layer-map (cons (cons key-char (nth counter current-layers)) layer-map))
(princ (strcat "[" key-char "] " layer-name-display (make-spaces (- (+ max-layer-name-length 3) (strlen layer-name-display))) status "\n"))
(setq counter (1+ counter))
)
(if (> total-pages 1)
(princ (strcat "\nEnd of Page " (itoa page) "/" (itoa total-pages) "\n"))
Expand All @@ -76,15 +76,15 @@
(show-page)

(while t
(setq user-input (strcase (getstring "\nEnter tag and action (e.g., SO to turn first layer On, AF for All Freeze): "))) ; Convert user input to uppercase
(setq user-input (strcase (getstring "\nEnter tag and action (e.g., SO to turn first layer On, AF for All Freeze): ")))
(cond
((equal user-input "N")
(setq page (if (= page total-pages) 1 (1+ page)))
(show-page)
)
((= (substr user-input 1 1) "A")
(cond
((= (substr user-input 2 1) "F") ; Freeze all except current
((= (substr user-input 2 1) "F")
(foreach layer-name all-layer-names
(if (not (equal (strcase layer-name) current-layer))
(progn
Expand All @@ -95,108 +95,108 @@
)
(princ "\nAll applicable layers are now frozen.\n")
)
((= (substr user-input 2 1) "T") ; Unfreeze all
((= (substr user-input 2 1) "T")
(foreach layer-name all-layer-names
(setq layer (vla-item layer-list layer-name))
(vla-put-freeze layer :vlax-false)
)
(princ "\nAll filtered layers are now unfrozen.\n")
)
((= (substr user-input 2 1) "L") ; Lock all
((= (substr user-input 2 1) "L")
(foreach layer-name all-layer-names
(setq layer (vla-item layer-list layer-name))
(vla-put-lock layer :vlax-true)
)
(princ "\nAll filtered layers are now locked.\n")
)
((= (substr user-input 2 1) "R") ; Unlock all
((= (substr user-input 2 1) "R")
(foreach layer-name all-layer-names
(setq layer (vla-item layer-list layer-name))
(vla-put-lock layer :vlax-false)
)
(princ "\nAll filtered layers are now unlocked.\n")
)
((= (substr user-input 2 1) "O") ; Turn on all
((= (substr user-input 2 1) "O")
(foreach layer-name all-layer-names
(setq layer (vla-item layer-list layer-name))
(vla-put-layeron layer :vlax-true)
)
(princ "\nAll filtered layers are now on.\n")
)
((= (substr user-input 2 1) "X") ; Turn off all
((= (substr user-input 2 1) "X")
(foreach layer-name all-layer-names
(setq layer (vla-item layer-list layer-name))
(vla-put-layeron layer :vlax-false)
)
(princ "\nAll filtered layers are now off.\n")
)
((= (substr user-input 2 1) "P") ; Make all plottable
((= (substr user-input 2 1) "P")
(foreach layer-name all-layer-names
(setq layer (vla-item layer-list layer-name))
(vla-put-plottable layer :vlax-true)
)
(princ "\nAll filtered layers are now plottable.\n")
)
((= (substr user-input 2 1) "Q") ; Make all not plottable
((= (substr user-input 2 1) "Q")
(foreach layer-name all-layer-names
(setq layer (vla-item layer-list layer-name))
(vla-put-plottable layer :vlax-false)
)
(princ "\nAll filtered layers are now not plottable.\n")
)
)
(textscr) ; Ensure the text screen remains open
(show-page) ; Show the same page again after performing the action
(textscr)
(show-page)
)
((assoc (substr user-input 1 1) layer-map)
(setq layer-name (cdr (assoc (substr user-input 1 1) layer-map)))
(cond
((= (substr user-input 2 1) "F") ; Freeze
((= (substr user-input 2 1) "F")
(if (not (equal (strcase layer-name) current-layer))
(vla-put-freeze (vla-item layer-list layer-name) :vlax-true)
(princ (strcat "\nLayer " layer-name " cannot be frozen because it is the current layer.\n"))
)
)
((= (substr user-input 2 1) "T") ; Unfreeze
((= (substr user-input 2 1) "T")
(vla-put-freeze (vla-item layer-list layer-name) :vlax-false)
(princ (strcat "\nLayer " layer-name " is now unfrozen.\n"))
)
((= (substr user-input 2 1) "L") ; Lock
((= (substr user-input 2 1) "L")
(vla-put-lock (vla-item layer-list layer-name) :vlax-true)
(princ (strcat "\nLayer " layer-name " is now locked.\n"))
)
((= (substr user-input 2 1) "R") ; Unlock
((= (substr user-input 2 1) "R")
(vla-put-lock (vla-item layer-list layer-name) :vlax-false)
(princ (strcat "\nLayer " layer-name " is now unlocked.\n"))
)
((= (substr user-input 2 1) "O") ; Turn on
((= (substr user-input 2 1) "O")
(vla-put-layeron (vla-item layer-list layer-name) :vlax-true)
(princ (strcat "\nLayer " layer-name " is now on.\n"))
)
((= (substr user-input 2 1) "X") ; Turn off
((= (substr user-input 2 1) "X")
(vla-put-layeron (vla-item layer-list layer-name) :vlax-false)
(princ (strcat "\nLayer " layer-name " is now off.\n"))
)
((= (substr user-input 2 1) "P") ; Make plottable
((= (substr user-input 2 1) "P")
(vla-put-plottable (vla-item layer-list layer-name) :vlax-true)
(princ (strcat "\nLayer " layer-name " is now plottable.\n"))
)
((= (substr user-input 2 1) "Q") ; Make not plottable
((= (substr user-input 2 1) "Q")
(vla-put-plottable (vla-item layer-list layer-name) :vlax-false)
(princ (strcat "\nLayer " layer-name " is now not plottable.\n"))
)
(t ; Make current
(t
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(vla-put-activelayer doc (vla-item layer-list layer-name))
(princ (strcat "\nLayer " layer-name " is now the current layer.\n"))
)
)
(textscr) ; Ensure the text screen remains open
(show-page) ; Show the same page again after performing the action
(textscr)
(show-page)
)
(t
(princ "\nInvalid input. Please try again.\n")
(textscr) ; Ensure the text screen remains open in case of invalid input
(textscr)
)
)
)
Expand Down
16 changes: 5 additions & 11 deletions commands/nav.lsp
Original file line number Diff line number Diff line change
@@ -1,29 +1,23 @@
(defun c::nav ()
(textscr) ; Open the text screen and keep it open
(setq *home-dir* (getenv "USERPROFILE")) ; Set the home directory to the user's home directory
(textscr)
(setq *home-dir* (getenv "USERPROFILE"))
(setq *current-dir* (if (getvar "DWGNAME")
(getvar "DWGPREFIX")
*home-dir*)) ; Set initial directory to the current CAD file location or home directory
*home-dir*))
(princ (strcat "\nInitial directory: " *current-dir*))
(while t
(setq input (getstring "\nEnter command (cd, .., ls, openfile, opendir, exit): " T))
(setq input-list (vl-string->list input " "))
(setq command (car input-list))
;; Properly join the remaining elements as the argument
(setq arg (apply 'strcat (mapcar (function (lambda (x) (strcat x " "))) (cdr input-list))))
(setq arg (vl-string-trim " " arg))
;; Debug print statements
(cond
((equal command "cd")
;; Trim leading and trailing spaces from the argument
(setq arg (vl-string-trim " " arg))
;; Check if the input is an absolute path
(if (vl-string-search ":\\" arg)
(setq full-path arg)
;; If not an absolute path, treat it as a relative path
(setq full-path (vl-filename-makepath *current-dir* arg))
)
;; Handle the ~ as home directory
(if (equal arg "~")
(setq full-path *home-dir*)
)
Expand Down Expand Up @@ -95,8 +89,8 @@
(vl-string-right-trim chars (vl-string-left-trim chars str))
)

(setq *home-dir* (getenv "USERPROFILE")) ; Set the home directory to the user's home directory
(setq *home-dir* (getenv "USERPROFILE"))
(setq *current-dir* (if (getvar "DWGNAME")
(getvar "DWGPREFIX")
*home-dir*)) ; Set initial directory to the current CAD file location or home directory
*home-dir*))
(princ (strcat "\nInitial directory: " *current-dir*))

0 comments on commit cc4bb02

Please sign in to comment.