• このフォーラムは、www.cad3d.it/forum1 - イタリアのデザインコミュニティの機械翻訳です。いくつかの用語は正しく翻訳されていません。

ダイアログ ボックスで lisp 内のエラー

  • Thread starter Thread starter Betoniera
  • Start date Start date

Betoniera

Guest
ho fatto un piccolo programma denominato "descrizione staffe.lsp" che semplicemente tira una riga e scrive una etichetta.
l'utilità sta nel fatto che l'etichetta è editabile in un riquadro di dialogo ed è quindi sempre disponibile in memoria, senza doverla digitare ogni volta.
molto comoda per etichette ripetitive.
per questo lisp devo ringraziare il forum perchè mi ha indicato le modalità di utilizzo del riquadro di dialogo.
per 3 anni ha sempre funzionato.
ora mi dà questo errore:

comando: ; errore: il server activex ha restituito un errore: errore durante il caricamento della libreria dll dei tipi

sapreste indicarmi come risolvere il problema?
penso che non dipenda dal lisp perchè su altri computer funziona.
in ogni modo trasmetto il listato del lisp e del riquadro dcl

programma lisp

;descrizione staffe.lsp
;autocad 2014 04-10-2013

(setq snp (getvar "snapmode")
ort (getvar "orthomode")
sc (getvar "dimscale")
)
(setvar "orthomode" 0)
(setvar "snapmode" 0)
(setq dcl_id (load_dialog "inputbox.dcl"))
(if (not (new_dialog "inputbox" dcl_id))
;;;(vl-exit-with-error (alert "riquadro di dialogo non trovato!"))
(exit)
)

(if (equal (type hdesc) 'real)
(setq hdesc(rtos hdesc))
)

(if (not hdesc);;; imposto nella dcl il valore dell'altezza testo
(set_tile "htesto" (setq hdesc "2.00"))
(set_tile "htesto" hdesc)
)

(if (not txt);;; imposto nella dcl il valore della stringa
(set_tile "testo" (setq txt "st %%c8/20"))
(set_tile "testo" txt)
)

(action_tile "testo" "(setq txt $value)");;; recupero il valore della stringa
(action_tile "htesto" "(setq hdesc $value)");;; recupero il valore dell'altezza del testo
(action_tile "accept" "(done_dialog 1)")

(setq risposta (start_dialog))
(unload_dialog dcl_id)

(if (= risposta 1)
(progn
(while (setq p1 (getpoint "\nimmetti punto iniziale "));;; primo punto iniziale
(setq p2 (getpoint p1 "\nimmetti punto etichetta "));;; secondo punto etichetta
(command "_color" 3)
(command "_line" p1 p2 "")(vla-put-color (vlax-ename->vla-object (entlast)) 3)
(setvar "textsize" (* (atof hdesc) 0.1 sc))
(if (< (car p2) (car p1))
(command "_text" "md" p2 "" 0 (strcat " " txt " "));;; scrive a sinistra
(command "_text" "ms" p2 "" 0 (strcat " " txt " "));;; scrive a destra
)
);while
)
(alert "comanado annullato");;; basta commentare questa riga per evitare il messaggio
)
(setvar "snapmode" snp)
(setvar "orthomode" ort)
(princ)


riquadro dcl

inputbox: dialog {
label="descrizione staffe";
spacer_1;
: edit_box {
label = "descrizione";
height = 1;
is_bold = true;
key = "testo";
edit_width =40;
edit_limit = 256;
allow_accept = true;
}
: edit_box {
label = "h testo";
is_bold = true;
key = "htesto";
edit_width =40;
edit_limit = 256;
allow_accept = true;
}
spacer_1;
ok_cancel;
}


ringrazio anticipatamente quanti vorranno esaminare il problema.
grazie
ciao a tutti
 
il codice autolisp è ok, non è lì il problema.
sembra invece che si sia perso il path per caricare la dll che serve per utilizzare funzioni tipo vlax-ename->vla-object
puoi fare 2 cose, la prima è provare a 'riparare' l'installazione di autocad (pannello di controllo / programmi e funzionalità / autocad)
la seconda è usare un 'command' per cambiare colore agli oggetti invece che usare vla-put-color.
 

Forum statistics

Threads
46,674
Messages
380,976
Members
2
Latest member
loop80
このフォーラムは、www.cad3d.it/forum1 - イタリアのデザインコミュニティの機械翻訳です。いくつかの用語は正しく翻訳されていません。

Members online

No members online now.
Back
Top