Lisp »Tips 'n Tricks
»Xdata
»1
»2
»3
»4
»5
»6
TXP1
TXP1 legge da un file TXT (punti.txt) le coordinate X Y Z di un punto e un valore numerico decimale (in quest'ordine), quindi disegna il punto, crea una lista xdata con il valore decimale e aggiorna l'entità punto.
;|
TXP1.LSP (31 Marzo 2006)
Copyright (C) 2006 Claudio Piccini. All rights reserved
www.cg-cad.com
Legge dal file PUNTI.TXT coordinate X Y Z e un valore num. decimale.
Esempio di file PUNTI.TXT:
x y z num.
706.3385 919.141108 0 -1.5
731.027256 856.218884 0 0.33
654.002078 819.409167 0 2.3
632.234096 919.799307 0 12.45
528.417552 886.335928 0 99.99
503.300646 812.716491 0 0.99
|;
(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"))
(setq nomeDir (getvar "dwgprefix"))
)
(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:TXP1 (/ olderr snapp snm orto piano nomeDir
stringa lista nf1 f1 p1 p2
val ed xd entX
)
(setq olderr *error* *error* myerror)
(setvar "cmdecho" 0)
(salVar)
(if (not (tblsearch "appid" "PUNTO_TXP"))(regapp "PUNTO_TXP"))
(command "osnap" "_non")
(setq nf1 (strcat nomeDir "punti.txt"))
(setq f1 (open nf1 "r")) ; apre il file PUNTI.TXT
(setq stringa " ")
(while (/= stringa nil)
(setq stringa (read-line f1))
(if (/= stringa nil)
(progn
(setq lista (strcat "(" stringa ")"))
(setq lista (read lista))
(setq p1 (list
(nth 0 lista) ; X
(nth 1 lista) ; Y
(nth 2 lista) ; Z
)
)
(command "_point" p1) ; disegna il punto
(setq ed (entget (entlast))) ; entlast restituisce il nome dell'ultima
; entita' creata
; (entget a) restituisce la lista che definisce l'entita' a
(setq val (nth 3 lista)) ; valore numerico decimale
(setq xd (list -3 (list "PUNTO_TXP"
(cons 1002 "{")
(cons 1000 "Valore")
(cons 1040 val)
(cons 1002 "}")
)
)
)
(setq entX (append ed (list xd))) ; aggiunge la lista xd alla lista ed
(entmod entX) ; aggiorna l'entita' punto
)
)
)
(close f1)
(ripVar) ; ripristina l'ambiente
)
;;;eof
|
Test del Lisp
File PUNTI.TXT:
706.3385 919.141108 0 -1.5
731.027256 856.218884 0 0.33
654.002078 819.409167 0 2.3
632.234096 919.799307 0 12.45
528.417552 886.335928 0 99.99
503.300646 812.716491 0 0.99
Command: txp1
Command: (leggiX)
Seleziona le entita' con una finestra:
Secondo punto della finestra:
((PUNTO_TXP (1002 . {) (1000 . Valore) (1040 . 0.99) (1002 . })))
((PUNTO_TXP (1002 . {) (1000 . Valore) (1040 . 99.99) (1002 . })))
((PUNTO_TXP (1002 . {) (1000 . Valore) (1040 . 12.45) (1002 . })))
((PUNTO_TXP (1002 . {) (1000 . Valore) (1040 . 2.3) (1002 . })))
((PUNTO_TXP (1002 . {) (1000 . Valore) (1040 . 0.33) (1002 . })))
((PUNTO_TXP (1002 . {) (1000 . Valore) (1040 . -1.5) (1002 . })))
TXP2
TXP2 legge da un file TXT (punti.txt) le coordinate X Y Z di un punto, una etichetta e un valore numerico decimale (in quest'ordine), quindi disegna il punto, crea una lista xdata e aggiorna l'entità punto.
;|
TXP2.LSP (31 Marzo 2006)
Copyright (C) 2006 Claudio Piccini. All rights reserved
www.cg-cad.com
Legge dal file PUNTI.TXT coordinate X Y Z
una etichetta e un valore numerico decimale.
Esempio di file PUNTI.TXT:
x y z etichetta valore num.
706.3385 919.141108 0 "A" -1.5
731.027256 856.218884 0 "B" 0.33
654.002078 819.409167 0 "C" 2.3
632.234096 919.799307 0 "D" 12.45
528.417552 886.335928 0 "E" 99.99
503.300646 812.716491 0 "F" 0.99
|;
(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"))
(setq nomeDir (getvar "dwgprefix"))
)
(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:TXP2 (/ olderr snapp snm orto piano nomeDir
stringa lista nf1 f1 p1 p2
val eti ed xd entX
)
(setq olderr *error* *error* myerror)
(setvar "cmdecho" 0)
(salVar)
(if (not (tblsearch "appid" "PUNTO_TXP"))(regapp "PUNTO_TXP"))
(command "osnap" "_non")
(setq nf1 (strcat nomeDir "punti.txt"))
(setq f1 (open nf1 "r")) ; apre il file PUNTI.TXT
(setq stringa " ")
(while (/= stringa nil)
(setq stringa (read-line f1))
(if (/= stringa nil)
(progn
(setq lista (strcat "(" stringa ")"))
(setq lista (read lista))
(setq p1 (list
(nth 0 lista) ; X
(nth 1 lista) ; Y
(nth 2 lista) ; Z
)
)
(command "_point" p1) ; disegna il punto
(setq ed (entget (entlast)))
(setq eti (nth 3 lista)) ; etichetta
(setq val (nth 4 lista)) ; valore numerico decimale
(setq xd (list -3 (list "PUNTO_TXP"
(cons 1000 eti)
(cons 1002 "{")
(cons 1040 val)
(cons 1002 "}")
)
)
)
(setq entX (append ed (list xd))) ; aggiunge la lista xd alla lista ed
(entmod entX) ; aggiorna l'entita' punto
)
)
)
(close f1)
(ripVar) ; ripristina l'ambiente
)
;;;eof
|
Test del Lisp
File PUNTI.TXT:
706.3385 919.141108 0 "A" -1.5
731.027256 856.218884 0 "B" 0.33
654.002078 819.409167 0 "C" 2.3
632.234096 919.799307 0 "D" 12.45
528.417552 886.335928 0 "E" 99.99
503.300646 812.716491 0 "F" 0.99
Command: txp2
Command: (leggiX)
Seleziona le entita' con una finestra:
Secondo punto della finestra:
((PUNTO_TXP (1000 . F) (1002 . {) (1040 . 0.99) (1002 . })))
((PUNTO_TXP (1000 . E) (1002 . {) (1040 . 99.99) (1002 . })))
((PUNTO_TXP (1000 . D) (1002 . {) (1040 . 12.45) (1002 . })))
((PUNTO_TXP (1000 . C) (1002 . {) (1040 . 2.3) (1002 . })))
((PUNTO_TXP (1000 . B) (1002 . {) (1040 . 0.33) (1002 . })))
((PUNTO_TXP (1000 . A) (1002 . {) (1040 . -1.5) (1002 . })))
Lisp »Tips 'n Tricks
Ultimo Aggiornamento_Last Update: 31 Marzo 2006
|