cg-Cad

Lisp »Tips 'n Tricks »Seleziona e cambia layer

Seleziona con una linea spezzata n entità e le sposta di layer.
Procedura:
Cliccare su un oggetto per scegliere il layer campione.
Selezionare le entità da spostare con una o più linee.
Battere Invio o cliccare con il tasto destro del mouse per terminare il comando.

;;;
;;; PKLAYER.LSP (7/06/2003)
;;; Autore Claudio Piccini
;;;

(defun myerror (s)                  
  (if (/= s "Function cancelled")
    (princ (strcat "\nError: " s))
  )
 (ripVar)
 (princ)
)

(defun salVar ()
 (setq orto (getvar "orthomode"))                          
 (setq snapp (getvar "osmode"))
 (setq snm (getvar "snapmode"))
 (setq piano (getvar "clayer"))  
)

(defun ripVar ()
 (command "_redraw")
 (setvar "cmdecho" 1)
 (setvar "osmode" snapp)
 (setvar "snapmode" snm)
 (setvar "orthomode" orto)
 (setvar "clayer" piano)
 (setvar "cecolor" "BYLAYER")
 (setq *error* olderr)
 (princ)
)

(defun cambia_layer (/ 
      kk ec1 entEc1 newLayer
      j k p1 p2 en pl1 pl2 pInt ls ss nEn
 )
 ;codice selezione layer
 (command "osnap" "_nea")
 (setq kk 1)
 (while kk
  (setq ec1 
   (entsel "\n Seleziona l'entita' campione:")
  )
  (if (/= ec1 nil)
   (setq kk nil)
   (princ "\n Non e' stata selezionata")
  )
 )
 (setq entEc1 (entget (car ec1)))
 (setq newLayer (assoc 8 entEc1))
 (setq newLayer (cdr newLayer))
 ;fine codice selezione layer
 (setq j 1)
 (command "osnap" "_non")
 (initget (+ 1 32))
 (setq p1 
  (getpoint "\n Punto iniziale:")
 )               
 (while j
  (initget 32)
  (setq p2 
   (getpoint "\n Punto successivo:" p1)
  )
  (if (= p2 nil)
   (setq j nil)
   (progn
    (command "_line" p1 p2 "")
    (setq ls (list p1 p2))
    (setq ss (ssget "_F" ls))
    (setq nEn (sslength ss))
    (setq k 0)
    (repeat nEn
     (setq en (ssname ss k))
     ;codice cambio layer
     (command "_change" en "" "_p" "_la" newLayer "")
     ;fine codice cambio layer
     (setq k (+ k 1))
    )
    (setq p1 p2)
   )
  )
 )
)

(defun C:PKLAYER (/ olderr snapp snm 
                    orto piano nomeDir
 )
 (setq olderr  *error*  *error* myerror)
 (setvar "cmdecho" 0)
 (salVar)
 (command "_layer" "_s" "0" "")
 (command "_color" "4")
 (cambia_layer)
 (ripVar)
)
;eof

Lisp »Tips 'n Tricks