我再次尝试给出一个关于ssget如何工作的重要提示,其他人在上面已经详细阐述了,在其最低级别just do(setq ss(ssget)),然后由您决定如何选择,设置1乘1,所有的几个,交叉窗口等。它只会在当前空间中看起来。
Tombu希望你不介意重新安排一点,这样ss可以是1或更多。
- (defun C:ForceObjectLayer (/ OLAY ss ent EnTyp Element)
- (setq ss (ssget))
- ; (setq ss (ssget "+.:E:S"))
- ; :E Everything in aperture
- ; :S Force single object selection only
- ; The "+." puts (ssget) into "point" mode. It helps the ":S"
- ; single-mode act just like (entsel) by avoiding implied
- ; selection windows.
- (if ss
- (progn
- (setvar "CMDECHO" 0)
- (setq OLAY (getvar "CLAYER"))
- (command "layer" "m" "dime" "lt" "continuous" "" "c" "yellow" "" "")
- (command "layer" "m" "text" "lt" "continuous" "" "c" "green" "" "")
- (command "layer" "m" "center" "lt" "center" "" "c" "red" "" "")
- (command "layer" "m" "hidden" "lt" "hidden" "" "c" "green" "" "")
- (command "layer" "m" "phantom" "lt" "phantom" "" "c" "white" "" "")
- ) ;progn
- (repeat (setq x (sslength ss)) ; ss can be just 1 entity
-
- (setq ent (ssname SS (setq x (- x 1)))
- EnTyp (cdr (assoc 0 (entget ent)))
- Element (cdr (assoc 6 (entget ent)))
- )
- (cond
- ((= EnTyp "DIMENSION")(command "change" ss "" "p" "c" "bylayer" "la" "dime" "lt" "bylayer" ""))
- ((= EnTyp "TEXT")(command "change" ss "" "p" "c" "bylayer" "la" "text" "lt" "bylayer" ""))
- ((= Element "CENTER")(command "change" ss "" "p" "c" "bylayer" "la" "center" ""))
- ((= Element "HIDDEN")(command "change" ss "" "p" "c" "bylayer" "la" "hidden" ""))
- ((= Element "PHANTOM")(command "change" ss "" "p" "c" "bylayer" "la" "phantom" ""))
- (T(princ "\nObject was not Dimension or Text or Element type Center, Hidden, or Phantom."))
- ) ; cond
- ) ; repeat
- (command "layer" "s" OLAY "")
-
- (princ)
- ); end ForceObjectLayer.lsp
|