Originally Posted by
Craig.Baldie
. . .tblnext and the wcmatch commands because i think thats where im runn. . .
I can not run and test the code, but here is a tune up. . 4U to test.
Code:
(defun c:safetylayers ( / OldCmd laychk ss Mlayer )
(setq OldCmd (getvar "CMDECHO" ) ) ;; Save user variable
(setvar "CMDECHO" 0 ) ;; Change user variable
(acet-autoload2 '("FLATTENSUP.LSP" (acet-flatn ss hide))) ;; load flatten command function
(command "-layer" "s" "0" "" ) ;; set layer 0 active
(command "-layer" "f" "*" "" ) ;; freeze all layers
;; local function that returns T if layer "*|SAFETY" or "*|SAFETY FREE SPACE" is found
(defun laychk ( Lay_In / Layer Found )
(while (and (setq Layer (tblnext "LAYER" (null Layer ))) (not Found ) )
(if (wcmatch (cdr (assoc 2 Layer )) Lay_In ) (setq Found T ) ( ) )
)
)
;; You can also check if "AS4685 SAFETY LAYER" exist to alert or create, because it must exist.
(if (not (laychk "AS4685 SAFETY LAYER" )) (alert "Layer 'AS4685 SAFETY LAYER' do not exist" ) (setq Mlayer T ) )
(if (and (laychk "*|SAFETY" ) (setq ss (ssget)) Mlayer )
;; if layer exists and objects are selected and Master layer exist, perform progn
(progn
(command "-layer" "t" "*|SAFETY" "" )
(command "copy" "p" "" "0,0,0" "0,0,0" )
(acet-flatn ss T )
(command ".chprop" "p" "" "la" "AS4685 SAFETY LAYER" "" )
)
); end if
(if (and (laychk "*|SAFETY FREE SPACE" ) (setq ss (ssget)) Mlayer )
(progn
(command "-layer" "f" "*" "t" "0" "t" "*|SAFETY FREE SPACE" "" )
(command "copy" "p" "" "0,0,0" "0,0,0" )
(acet-flatn ss T )
(command ".chprop" "p" "" "la" "AS4685 SAFETY LAYER" "" )
(command ".chprop" "p" "" "co" "green" "" )
(command "-layer" "f" "*" "" )
)
); end if
(if (and (laychk "*|SAFETY499" ) (setq ss (ssget)) Mlayer )
(progn
(command "-layer" "f" "*" "t" "0" "t" "*|SAFETY499" "" )
(command "copy" "p" "" "0,0,0" "0,0,0" )
(acet-flatn ss T )
(command ".chprop" "p" "" "la" "AS4685 SAFETY LAYER" "" )
(command ".chprop" "p" "" "co" "30" "" )
)
); end if
(command "-layer" "f" "*safety*" "t" "AS4685 SAFETY LAYER" "" )
(setvar "CMDECHO" OldCmd ) ;; Reset user variable
(princ)
) ; end c:safetylayers function
: ) Happy Computing !
kennet