Problemi con routine lisp

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
#1
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: AutoCad, GstarCAD, CadWorx, Excel, Lisp, VBA
Regione: Sicilia
#2
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
#3
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.