Problemi con routine lisp

Angelo2449

Utente Junior
professione: Pensionato
software: Autocad
regione: Lombardia
Salve a tutti,
ho già postato un discussione simile ma sino ad ora nessuno ha risposto.
Voglio ora spiegare meglio il problema.

Da anni uso queste due routines :
Codice:
   (defun C:ORG (/ pt1 pt2)

    (setq pt1 nil)
    (while
        (= pt1 nil)
        (princ "\nPunto base <")
        (princ point)
        (princ "> : ")
        (setq pt1 (getpoint))
    )

    (if pt1 (setq point pt1))

    (setq pt2 nil)
    (while
        (= pt2 nil)
        (princ "\nSecondo punto <")
        (princ point2)
        (princ "> : ")
        (setq pt2 (getpoint))
    )

    (if pt2 (setq point2 pt2))

        (princ "\n")
        (princ point)
        (princ "\n")
        (princ point2)
        (princ "\n")

    (setq organg (angle point point2))
        (command "_line" point point2 "")
    (setq origin T)

[CODE] 

   (defun C:POLAR (/ ag ag1 ds point1 ptxt)

        (if (= point nil)
            (progn
            (alert "Devi prima definire l'Orientamento")
                (exit)
            )
        )

        (setq FC3 (findfile "C:\\AutocadSupporto\\Provvisori\\Polar.dat"))

        (if FC3
            (vl-file-delete "C:\\AutocadSupporto\\Provvisori\\Polar.dat")
        )

        (startapp "C:\\AutocadSupporto\\Liberty\\Polar.exe " "C:\\AutoCadSupporto\\Liberty\\Polar.tkn")

        (setq qa nil)
        (while (= qa nil)
            (setq qa (getpoint "\nClicca un punto qualsiasi")) 
        )

        (setq FC4 nil)
        (while
             (= FC4 nil)
             (setq FC4 (findfile "C:\\AutocadSupporto\\Provvisori\\Polar.dat"))
        )

        (setq fp1 (open "C:\\AutocadSupporto\\Provvisori\\Polar.dat" "r"))
            (setq ptxt (read-line fp1))
            (setq ag (read-line fp1))
            (setq ds (read-line fp1))
            (setq htxt (read-line fp1))
        (close fp1)

        (princ "\n")
        (princ ptxt)
        (princ "\n")
        (princ ds)
        (princ "\n")
        (princ ag)
        (princ "\n")
        (princ htxt)
        (princ "\n")

        (setvar "blipmode" 0 )
        (setvar "cmdecho" 0 )
        (setq ag1 (angle point point2))
        (setq agRad (atof ag))
        (setq dsReal (atof ds))
        (setq htxtReal (atof htxt))
        (setq agRad (/ agRad 200))
        (setq agRad (* agRad pi))

        (princ "\n")
        (princ ag1)
        (princ "\n")
        (princ agRad)
        (princ "\n")

        (setq point1 (polar point (- (* 2 pi) (- agRad ag1)) dsReal))
        (command "_line" point point1 "")
        (command "_change" "_last" "" "_p" "_c" "_red" "")
        (command "_circle" point1 0.20 "")
        (command "_change" "_last" "" "_p" "_c" "_red" "")
 
        (command "_text" point1 htxtReal 0 ptxt "")
        (command "_change" "_last" "" "_p" "_c" "_red" "")

        (alert "Vettore tracciato")

    )

Da ieri, improvvisamente, non funzionano più, i risultati sono i seguenti:
Comando:
Comando: ORG
Punto base <(279.472 258.532 0.0)> :
Secondo punto <(376.673 195.313 0.0)> : nil

Comando:
Comando:
Comando: POLAR
Numero punto :10

Distanza : 50

Angolo : 35
; errore: troppi argomenti

Comando:
Comando:
Comando:
Comando: POLAR
Numero punto :30

Distanza : 56

Angolo : 57
; errore: troppi argomenti

Non riesco a comprenderne il motivo, una volta, la prima, la routine > Polar < ha funzionato, poi basta!
Non capisco, grazie.
 

rpor66

Utente Standard
professione: Programmatore
software: Lisp, Vba per Autocad, BricsCad e GstarCAD, CadWorx
regione: Sicilia
L'errore si verifica in c:ORG, la chiamata al comando (c: POLAR) evidentemente è errata; nel codice pubblicato manca proprio quel tratto. In ogni caso, evita di assegnare nomi di comandi pari a quello dei comandi Lisp, non è un errore ma potrebbe portare a sovrapposizione; aggiungi un suffisso, tipo anPolar (angelo), il tuo codice difficilmente potrà interferire con quello scritto da altri.
 

Angelo2449

Utente Junior
professione: Pensionato
software: Autocad
regione: Lombardia
Grazie,
avevo trovato per caso la soluzione al problema.
Infatti ho rinominato "Polar" e tutto funzione perfettamente!
Per favore, in un ultimo post, ti avevo chiesto aiuto per l'eliminazione di un elemento, se puoi dare un'occhiata.
Grazie ancora.
 

Statistiche forum

Discussioni
59,354
Messaggi
506,859
Utenti registrati
111,696
Ultimo utente registrato
jcmc

Utenti online

Nessun utente è online al momento.
Top