Angelo2449
Utente Junior
- Professione: Pensionato
- Software: Autocad
- Regione: Lombardia
Salve a tutti,
ho scritto questo programmino che traccia dei vettori polari, funziona benissimo ma, non capisco il motivo per il quale non viene visualizzato il messaggio finale ed il "princ" del contatore i.
Ripeto, a parte i due dettagli, il codice funziona benissimo!!!
P.S. Ho eliminato la dichiarazione delle variabili per motivi di spazio.
Grazie.
ho scritto questo programmino che traccia dei vettori polari, funziona benissimo ma, non capisco il motivo per il quale non viene visualizzato il messaggio finale ed il "princ" del contatore i.
Codice:
(setq FC3 (findfile "C:\\AutocadSupporto\\Polar\\MultiPolar.dat"))
(if FC3
(vl-file-delete "C:\\AutocadSupporto\\Polar\\MultiPolar.dat")
)
(setq FC3 (findfile "C:\\AutocadSupporto\\Polar\\Polar.dat"))
(if FC3
(vl-file-delete "C:\\AutocadSupporto\\Polar\\Polar.dat")
)
;; ---------------------
(setq Cont 0)
;; -------------------------------------------------------------------------------
(setq NomeX1 nil)
(setq NomeX2 nil)
(setq ed1 nil)
(setq Titolo1 (strcat "Seleziona il Nome della Stazione : " (itoa Cont)))
(while (= ed1 nil)
(princ Titolo1)
(setq ed1 (entsel))
)
(setq Lista1 (entget (car ed1) '("Gruppo")))
(setq Xlist1 (assoc -3 Lista1))
(setq TxtData1 (car (cdr Xlist1)))
(setq ed1 (entget (car ed1)))
(setq txt1 (cdr (assoc 1 ed1)))
(setq en1 (cdr (assoc -1 ed1)))
(setq Punto1 (cdr (assoc 10 ed1)))
(redraw en1 3)
(setq NomeX1 (cdr (nth 1 TxtData1)))
(setq TipoPunto1 (cdr (nth 2 TxtData1)))
(setq Quota1 (cdr (nth 3 TxtData1)))
(setq Ecef1 (cdr (nth 4 TxtData1)))
(setq GaussBoaga1 (cdr (nth 5 TxtData1)))
(setq ControlloStz1 (cdr (nth 6 TxtData1)))
(setq ControlloPt1 (cdr (nth 7 TxtData1)))
(if (and (= ControlloPt1 "Non definito") (= ControlloStz1 "Non inserita"))
(progn
(alert "Selezione non valida")
(exit)
)
)
;; -----------------------------------------------------------------------
(setq ed2 nil)
(setq Titolo2 (strcat "Seleziona il Nome del Punto di orientamento : " (itoa Cont)))
(while (= ed2 nil)
(princ Titolo2)
(setq ed2 (entsel))
)
(setq Lista2 (entget (car ed2) '("Gruppo")))
(setq Xlist2 (assoc -3 Lista2))
(setq TxtData2 (car (cdr Xlist2)))
(setq ed2 (entget (car ed2)))
(setq txt2 (cdr (assoc 1 ed2)))
(setq en2 (cdr (assoc -1 ed2)))
(setq Punto2 (cdr (assoc 10 ed2)))
(redraw en2 3)
(setq NomeX2 (cdr (nth 1 TxtData2)))
(setq TipoPunto2 (cdr (nth 2 TxtData2)))
(setq Quota2 (cdr (nth 3 TxtData2)))
(setq Ecef2 (cdr (nth 4 TxtData2)))
(setq GaussBoaga2 (cdr (nth 5 TxtData2)))
(setq ControlloStz2 (cdr (nth 6 TxtData2)))
(setq ControlloPt2 (cdr (nth 7 TxtData2)))
(if (and (= ControlloPt2 "Non definito") (= ControlloStz2 "Non inserita"))
(progn
(alert "selezione non valida")
(exit)
)
)
(while (= NomeX2 nil)
(setq fp1 (open "C:\\AutocadSupporto\\Polar\\MT.dat" "w"))
(write-line NomeX1 fp1)
(write-line NomeX2 fp1)
(close fp1)
)
(redraw en1 4)
(redraw en2 4)
(princ "\n")
(princ "GaussBoaga1 >>>> ")
(princ GaussBoaga1)
(princ "\n")
(princ "GaussBoaga2 >>>> ")
(princ GaussBoaga2)
(princ "\n")
(setq PosVirg (vl-string-search "," GaussBoaga1))
(princ "\n")
(princ "PosVirg >>>> ")
(princ PosVirg)
(princ "\n")
(setq CX1 (substr GaussBoaga1 1 (- PosVirg 1)))
(setq CY1 (substr GaussBoaga1 (+ PosVirg 2)))
(setq Point1 (list (atof CX1) (atof CY1)))
(setq PosVirg (vl-string-search "," GaussBoaga2))
(princ "\n")
(princ "PosVirg >>>> ")
(princ PosVirg)
(princ "\n")
(setq CX2 (substr GaussBoaga2 1 (- PosVirg 1)))
(setq CY2 (substr GaussBoaga2 (+ PosVirg 2)))
(setq Point2 (list (atof CX2) (atof CY2)))
(setq organg (angle Point1 Point2))
(command "_line" GaussBoaga1 GaussBoaga2 "")
(command "_change" "_last" "" "_p" "_c" "_red" "")
(setq origin T)
;; -------------------------------------------------------------------------------
(startapp "C:\\AutocadSupporto\\Liberty\\MT3.exe " "C:\\AutocadSupporto\\Liberty\\MT3.tkn")
(setq Controllo1 nil)
(while (= Controllo1 nil)
(setq Controllo1 (findfile "C:\\AutocadSupporto\\Polar\\Polar.dat"))
)
(princ "\n")
(princ "Controllo1 >>>> ")
(princ Controllo1)
(princ "\n")
(setq Controllo2 nil)
(while (= Controllo2 nil)
(setq Controllo2 (findfile "C:\\AutocadSupporto\\Polar\\PolarSetUp.dat"))
)
(setq HPrisma nil)
(while (= HPrisma nil)
(if (= Controllo2 "C:\\AutocadSupporto\\Polar\\PolarSetUp.dat")
(progn
(setq fp2 (open "C:\\AutocadSupporto\\Polar\\PolarSetUp.dat" "r"))
(setq Vettori (read-line fp2))
(setq Cerchio (read-line fp2))
(setq Raggio (read-line fp2))
(setq Incremento (read-line fp2))
(setq ColoreLinee (read-line fp2))
(setq ColoreCerchio (read-line fp2))
(setq Fine (read-line fp2))
(setq Libretto (read-line fp2))
(setq NotaStazione (read-line fp2))
(setq NotaOrientamento (read-line fp2))
(setq HStrumento (read-line fp2))
(setq HPrisma (read-line fp2))
(close fp2)
);;progn
);; if
) ;;while
(setq fp10 (open "C:\\AutocadSupporto\\Libretto\\LibrettoPregeo.dat" "a"))
(if (= Controllo1 "C:\\AutocadSupporto\\Polar\\Polar.dat")
(progn
(setq fp1 (open "C:\\AutocadSupporto\\Polar\\Polar.dat" "r"))
(setq NumRighe (read-line fp1))
(setq Stazione (read-line fp1))
(repeat (atoi NumRighe)
(setq i (+ i 1))
(setq Riga (read-line fp1))
(setq Dincl (substr Riga 18 14))
(setq DistIncl (atof Dincl))
(setq AngAth (substr Riga 37 19))
(setq AngZenith (atof AngAth))
(setq AngZenith (abs(- 100 AngZenith)))
(setq AngZenithRad (* (/ AngZenith 400) pi))
(setq CosAzR (cos AngZenithRad))
(setq DistanzaOri (* DistIncl CosAzR))
(setq SinAzR (sin AngZenithRad))
(setq Dislivello (* DistIncl SinAzR))
(setq QuotaX (- (atof Quota1) Dislivello))
(setq QuotaStr (rtos QuotaX))
;; --------------------------------
(setq AngAh (substr Riga 62 20))
(setq AngAzimuth (atof AngAh))
(setq ag1 (angle Point1 Point2))
(setq agRad (/ AngAzimuth 200))
(setq agRad (* agRad pi))
(setq Punto (polar Point1 (- (* 2 pi) (- agRad ag1)) DistanzaOri))
(setq Descrizione (substr Riga 92))
(setq Descrizione (vl-string-trim " " Descrizione))
;; --------------------------------
(if (= Vettori "1")
(progn
(command "_line" Point1 Punto "")
(command "_change" "_last" "" "_p" "_c" "_red" "")
);; progn
);;if
(if (= Cerchio "1")
(progn
(command "_circle" Punto Raggio)
(command "_change" "_last" "" "_p" "_c" "_red" "")
);;progn
);;if
(setq NomePunto (substr Riga 1 14))
(setq PosBlank (vl-string-search " " NomePunto))
(setq NomePunto (substr NomePunto (+ PosBlank 2)))
(setq NomePunto (vl-string-trim " " NomePunto))
(command "_text" Punto 0.40 0 NomePunto)
(command "_change" "_last" "" "_p" "_c" 174 "")
(if (= Libretto "1")
(progn
(setq NomeEntita (entlast))
(setq Oggetto "Gruppo")
(if (not (tblsearch "APPID" Oggetto))
(regapp Oggetto)
)
(setq OldList (entget NomeEntita))
(setq XYZ (cdr (assoc 10 OldList)))
(setq GaussBoaga (strcat (rtos (car XYZ)) "," (rtos (cadr XYZ))))
(setq TheData (list -3 (list Oggetto (cons 1000 NomePunto) (cons 1000 "Vertice Finale Base Line") (cons 1000 QuotaStr) (cons 1000 "---------------") (cons 1000 GaussBoaga) (cons 1000 NomeX1) (cons 1000 "Definito"))))
(setq NewList (append OldList (list TheData)))
(entmod NewList)
);;progn
);;if
(princ "\n")
(princ "i >>>>>>>>>>>>>>>>> ")
(princ i)
(princ "\n")
);;repeat
(close fp1)
) ; progn
) ; if
(close fp10) ;; LibrettoPregeo
(alert "Tracciamento polare eseguito")
) ;; defun
Ripeto, a parte i due dettagli, il codice funziona benissimo!!!
P.S. Ho eliminato la dichiarazione delle variabili per motivi di spazio.
Grazie.