Eccomi di nuovo,
ho applicato i tuoi preziosi suggerimenti con grandi risultati ma, questa non ne vuol sapere di funzionare a dovere!
Ho scritto la routine, funziona, poi ho inserito la parte compresa tra le due doppie righe di trattini ed il quarto elemento di TheData non funziona :
Codice:
(defun C:ACELERIMETRICO2DINPUT (/ FC2 fp1 Controllo1 fp5 fp1 NomePuntoOne NotaOne PuntoCliccato Cx Cy XYZ comment Dist angolo angolostr Lung angolostr GaussBoaga OLdList Np NomePunto TheData NewList)
(if (= AIUTOICONE 1)
(progn
(setq fp1 (open "C:\\AutocadSupporto\\Help\\DatiAiuto.dat" "w"))
(write-line "Celerimetrico2dInput" fp1)
(close fp1)
(startapp "C:\\AutocadSupporto\\Liberty\\AiutoGen.exe " "C:\\AutocadSupporto\\Liberty\\AiutoGen.tkn")
(exit)
)
)
(setq FC2 (findfile "C:\\AutocadSupporto\\Celerimetrico\\DatiOri.dat"))
(if FC2
(vl-file-delete "C:\\AutocadSupporto\\Celerimetrico\\DatiOri.dat")
)
; ----------------------------------------------------------------------------------------------------
(startapp "C:\\AutocadSupporto\\Liberty\\2dCelOriInput.exe " "C:\\AutoCadSupporto\\Liberty\\2dCelOriInput.tkn")
; ----------------------------------------------------------------------------------------------------
(setq PuntoCliccato (getpoint "\nClicca il Punto"))
(setq Controllo1 nil)
(while (= Controllo1 nil)
(setq Controllo1 (findfile "C:\\AutocadSupporto\\Celerimetrico\\DatiOri.dat"))
)
(if (= Controllo1 "C:\\AutocadSupporto\\Celerimetrico\\DatiOri.dat")
(progn
(setq fp5 (open "C:\\AutocadSupporto\\Celerimetrico\\DatiOri.dat" "r"))
(setq NomePuntoOne (read-line fp5))
(setq NotaOne (read-line fp5))
(close fp5)
)
)
(command "_circle" PuntoCliccato 0.15)
(setq Cx (car PuntoCliccato))
(setq Cy (cadr PuntoCliccato))
(setq Cxx (+ Cx 0.00))
(setq Cyy (+ Cy 0.25))
(setq XYZ (list Cxx Cyy 0.0))
(print XYZ)
(print "\n")
(command "_text" XYZ 0.40 0 (strcat " " NomePuntoOne))
(command "_change" "_last" "" "_p" "_c" "_red" "")
;; ------------------------------------------------------------------------------------------------------------
;; ------------------------------------------------------------------------------------------------------------
(setq NomeEntita (entlast))
(setq Oggetto "Gruppo")
(if (not (tblsearch "APPID" Oggetto))
(regapp Oggetto)
)
(setq OldList (entget NomeEntita))
(setq GaussBoaga (strcat (rtos Cx) "," (rtos Cy)))
(setq TheData (list -3 (list Oggetto (cons 1000 NomePuntoOne) (cons 1000 "---------------") (cons 1000 GaussBoaga) (cons 1000 "----------------") (cons 1000 "Definito"))))
(setq NewList (append OldList (list TheData)))
(entmod NewList)
;; ------------------------------------------------------------------------------------------------------------
;; ------------------------------------------------------------------------------------------------------------
(command "_line" Punto1 PuntoCliccato "")
(setq Dist (distance Punto1 PuntoCliccato))
(setq angolo (- organg (angle Punto1 PuntoCliccato)))
(if (< angolo 0 ) (setq angolo (+ (* 2 pi) angolo)))
(setq angolostr (angtos angolo 2 4))
(setq Lung (- (strlen angolostr) 1))
(setq angolostr (substr angolostr 1 lung))
(setq comment NotaOne)
(setq fp2 (open "C:\\AutocadSupporto\\Libretto\\LibrettoPregeo.dat" "a"))
(if (= comment "")
(setq txtoutldue (strcat "2|" NomePuntoOne "|" angolostr "|" (rtos Dist 2 3) "|"))
(setq txtoutldue (strcat "2|" NomePuntoOne "|" angolostr "|" (rtos Dist 2 3) "|" comment "|"))
)
(write-line txtoutldue fp2)
(close fp2)
(alert "Dati del Punto Orizzontale memorizzati")
(princ "\n")
) ;; fine comando CELERIMETRICO2DINPUT
Ottengo questo messaggio di errore :
Comando: ; errore: gruppo DXF errato: (-3 ("Gruppo" (1000 . " 1060") (1000 . "---------------") (1000 . "1498792.8525,5042429.7398") (1000) (1000 . "Definito")))
dove il quarto elemento, anziché "----------------", è niente!
Lisp = disperazione!
Grazie.