cg-Cad

Lisp »Tips 'n Tricks »Quota Z

QZ

Scrive nel disegno la coordinata Z di tutti i punti presenti su un layer.

;|
     qz.lsp - 30 Maggio 2006
     (C) 2006 by Claudio Piccini
     http://www.cg-cad.com/

     Scrive la coordinata Z di tutti i punti 
     presenti su un layer
|;

(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 C:QZ (/ olderr s1 nEnt 
               hT ; altezza testo
               k ent l1 pl1
               snapp snm orto piano
 )
 (setq olderr *error* *error* myerror)
 (setvar "cmdecho" 0)
 (salVar)
 (setq hT (getvar "textsize"))
 (command "osnap" "_node")
 (setq s1 (entsel "\n Seleziona un punto di riferimento:"))
 (setq ent (entget (car s1)))
 (setq nomeLayer (cdr (assoc 8 ent)))
 (setq s1 (ssget "X" (list (cons 8 nomeLayer))))
 (setq nEnt (sslength s1))
 (setq k 0)
 (repeat nEnt
  (setq ent (entget (ssname s1 k)))
  (if (= "POINT" (cdr (assoc 0 ent)))
   (progn
    (setq l1 (assoc 10 ent))
    (setq pl1 (cdr l1))
    (command "_text" pl1 hT 0.0 (rtos (caddr pl1) 2 3))
   )
  )
  (setq k (+ k 1))
 )
 (ripVar)
)
;;;eof

Test del Lisp

Per provare il lisp per prima cosa disegno un insieme di punti casuali nello spazio (in automatico con il lisp RPT3, vedi AutoLISP Tips & Tricks Volume I):

Command: rpt3
Valore del seme?
0
Quanti numeri?
100
Intervallo da 0 a?
1000
più grande è il numero e più sono distanziati i punti.

Quindi uso QZ; il lisp chiede di selezionare un punto qualsiasi (è attivo l'osnap NODE) indi legge la coordinata Z di tutti i punti presenti sul piano a cui appartiene il punto selezionato.
Infine scrive accanto al punto la coordinata Z (l'altezza del testo è letta, in automatico, dalla variabile di sistema TEXTSIZE):

Command: qz
Seleziona un punto di riferimento

Lisp »Tips 'n Tricks

Ultimo Aggiornamento_Last Update: 30 Maggio 2006