File dcl non funzionante

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
Salve a tutti,
sto tentando invano di far funzionare questo semplice programmino il lisp e dcl.
Le ho provate tutte, vorrei sapere perché no funziona, ringrazio anticipatamente.

Codice:
; MyYesNo - Question dialog with one question line
; Arguments: 2
;   Title$ = Dialog Title
;   Question$ = Question line
; Syntax: (MyYesNo " My Yes No" "Do you like creating programs in AutoLISP?")
;----------------------------------------------------------------------------------------------------------
(defun C:MyYesNo (Title$ Question$ / Answer$ Dcl_Id% Return#)
  (princ "\nMyYesNo")(princ)
  (setq Dcl_Id% (load_dialog "MyYesNo.dcl"))
  (new_dialog "MyYesNo" Dcl_Id%)
  (set_tile "Title" Title$)
  (set_tile "Text1" Question$)
  (action_tile "Yes" "(done_dialog 1)")
  (action_tile "No" "(done_dialog 0)")
  (setq Return# (start_dialog))
  (unload_dialog Dcl_Id%)
  (if (= Return# 1)
    (setq Answer$ "Yes")
    (setq Answer$ "No")
  );if
  (princ "\n")(princ Answer$)(princ);Optional
  Answer$
);defun MyYesNo

//---------------------------------------------------------------------------------------------------------
// MyYesNo
// Note: The width for the Text1 key was determined by the syntax example and
// will need to be changed as per your requirements. Also note that the buttons
// for Yes and No, the added fixed_width = true;.
//---------------------------------------------------------------------------------------------------------
MyYesNo : dialog {
  key = "Title";
  label = "";//Title$ from lsp file
  spacer;
  : text {
    key = "Text1";
    label = "";//Question$ from lsp file
    width = 35.0;
    alignment = centered;
  }
  spacer;
  : row {
    fixed_width = true;
    alignment = centered;
    : button {
      key = "Yes";
      label = "&Yes";
      is_default = true;
      width = 7.92;
      fixed_width = true;
    }
    : button {
      key = "No";
      label = "&No";
      is_cancel = true;
      width = 7.92;
      fixed_width = true;
    }
  }
}//MyYesNo
 

rpor66

Utente Standard
Professione: Programmatore
Software: Lisp, Vba per Autocad, BricsCad e GstarCAD, CadWorx
Regione: Sicilia
Dopo
(new_dialog "MyYesNo" Dcl_Id%)
aggiungi
(if (not (new_dialog "MyYesNo" dcl_id%)) (exit))
se non trova il file MyYesNo.dcl il programma termina.
E' una regola da seguire sempre, ti evita di impazzire cercando di trovare il difetto che è solo nel mancato caricamento del file dcl.
Per ovviare a questo o aggiungi il path nei percorsi di ricerca o lo specifichi, esempio:
"c:/miopercorso/MyYesNo" o "c:\\miopercorso\\MyYesNo"
 

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
Grazie,
ho inserito la riga ma ottengo sempre l'errore : "Comando: MYYESNO ; errore: argomenti mancanti"
 

rpor66

Utente Standard
Professione: Programmatore
Software: Lisp, Vba per Autocad, BricsCad e GstarCAD, CadWorx
Regione: Sicilia
Dimenticavo:
Syntax: (c:MyYesNo " My Yes No" "Do you like creating programs in AutoLISP?")
Scusa
 

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
Scusa ma non riesco a farlo funzionare, ottengo sempre "errore argomenti mancanti"
Grazie
Codice:
; MyYesNo - Question dialog with one question line
; Arguments: 2
;   Title$ = Dialog Title
;   Question$ = Question line
; Syntax: (MyYesNo " My Yes No" "Do you like creating programs in AutoLISP?")
;----------------------------------------------------------------------------------------------------------
(defun C:MyYesNo (Title$ Question$ / Answer$ Dcl_Id% Return#)
  (princ "\nMyYesNo")(princ)
  (setq Dcl_Id% (load_dialog "MyYesNo.dcl"))
  (new_dialog "MyYesNo" Dcl_Id%)
  (if (not (new_dialog "c:MyYesNo" dcl_id%)) (exit))
  (set_tile "Title" Title$)
  (set_tile "Text1" Question$)
  (action_tile "Yes" "(done_dialog 1)")
  (action_tile "No" "(done_dialog 0)")
  (setq Return# (start_dialog))
  (unload_dialog Dcl_Id%)
  (if (= Return# 1)
    (setq Answer$ "Yes")
    (setq Answer$ "No")
  );if
  (princ "\n")(princ Answer$)(princ);Optional
  Answer$
);defun MyYesNo




//---------------------------------------------------------------------------------------------------------
// MyYesNo
// Note: The width for the Text1 key was determined by the syntax example and
// will need to be changed as per your requirements. Also note that the buttons
// for Yes and No, the added fixed_width = true;.
//---------------------------------------------------------------------------------------------------------
MyYesNo : dialog {
  key = "Title";
  label = "";//Title$ from lsp file
  spacer;
  : text {
    key = "Text1";
    label = "";//Question$ from lsp file
    width = 35.0;
    alignment = centered;
  }
  spacer;
  : row {
    fixed_width = true;
    alignment = centered;
    : button {
      key = "Yes";
      label = "&Yes";
      is_default = true;
      width = 7.92;
      fixed_width = true;
    }
    : button {
      key = "No";
      label = "&No";
      is_cancel = true;
      width = 7.92;
      fixed_width = true;
    }
  }
}//MyYesNo
 

rpor66

Utente Standard
Professione: Programmatore
Software: Lisp, Vba per Autocad, BricsCad e GstarCAD, CadWorx
Regione: Sicilia
Crea una directory e copiaci i due file.
Aggiungi ai percorsi di ricerca la directory creata.
Carica il file Dialog.lsp e immetti su command:
(c:MyYesNo "My Yes No" "Do you like creating programs in AutoLISP?")
L'ho provato e funziona.
 

Allegati

  • Dialog.zip
    724 bytes · Views : 14

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
Ho provato funziona, ora vorrei modificare i due files in modo da usarli, non come "MyYesNo" in modo generico ma in modo particolare, quindi fornendo nel lancio, il testo della domanda.
Il testo della domanda dovrebbe far parte dei file stessi, lanciando quindi il comando solo col suo nome, come si lancia normalmente un LISP.
Si può fare?
La domanda è "Vuoi veramente cancellare il File '", il nome dei due file "EliminaLib" ed il nome dei pulsanti "Si" e "No"
Ho provato a farlo io ma con risultati deludenti.
Grazie
 

rpor66

Utente Standard
Professione: Programmatore
Software: Lisp, Vba per Autocad, BricsCad e GstarCAD, CadWorx
Regione: Sicilia
da lisp basta utilizzarla come funzione:
(if (= (c:MyYesNo "Elimina" "Vuoi veramente cancellare il File ?") "Yes")
(istruzioni per cancellare file)
)
 

Statistiche forum

Discussioni
58,632
Messaggi
499,983
Utenti registrati
104,425
Ultimo utente registrato
Robert25

Staff online

Utenti online

Top