Newsgroup: it.comp.software.cad
Titolo: [AutoLISP -> VBA]passaggio parametri

Salve,
avrei una piccola domanda da porvi.
Avrei bisogno di sapere,se possibile, come posso passare una o più
variabili (stringa) da una funzione LISP ad una VBA per successive
elaborazioni in VBA.
Grazie molte
R.Zanni
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Puoi salvarle su disco in un fle temporaneo oppure sfruttare le variabili di
AutoCAD che contengono del testo (tipo collegamenti ipertestuali ecc.);
dagli un'occhiata con "setvar" "?".
Ciao Claudio

ciao rodolfo, pescando dal sito della autodesk...
Is it possible to give arguments to a VBA macro? It is not possible to pass
parameters directly into a VBA macro from AutoCAD, however, you can use the
GetString function in VBA and the (command) function from AutoLISP to pass
data.
This example shows how to pass data using VBA and AutoLISP to a VBA macro:
In the MODULE:
Public Param1, Param2 As String
Sub MyMacro()
    Param1 = ThisDrawing.Utility.GetString(False)
    Param2 = ThisDrawing.Utility.GetString(False)
    'Enter your code here
End Sub
Then call the VBA macro as:
(command "-VBARUN" "MyMacro" "Argument1" "Argument2")
Note: The project needs to be loaded before calling the macro, otherwise
use (command "-VBALOAD" "ProjectName.dvb") to load the project
...nella chiamata della macro nel file .lsp sostituirai "Argument1" e
"Argument2" con il nome delle due inserirai variabili che conterranno delle
stringhe, spero ti sia stato d'aiuto.
***
stefano v.
stvagel(at)tin(dot)it
icq# 38298343
So long, and thanks for all the fish.

Grazie a tutti per l'interessamento.


Ciao Rodolfo
E' un problema che sto cercando di risolvere anch'io, sul sito 
www.acadx.com
ci sono molte idee e codici per fare ciň, non so ancora quale sia la
soluzione migliore tra queste:
Usare le variabili USER di autocad, scambiare i dati tramite un modulo
activex, utilizzare un file esterno, usare il regestry di windows
(pericoloso), e infine (a meno che non ci siano altre idee) utilizzare
un'entita Dictionary per registrare i dati.
Se ti interessa ne parliamo a voce (2 cervelli sono, (a volte) , meglio di
uno)
Ciao Mario Scavroni

Ciao Mario,
premetto che non sono un drago di "programmatore",cmq, e ti scrivo prima
di aver
provato il suggerimento di Stefano Vangelli,il quale mi sembra
interessante.
Quindi,proverò a faer qualche provina e poi ci potremmo riscrivere o
parlare.
...
In effetti avevo pensato di usare un file tmp dove scrivere e dopo
recuperare
con VBA quello che mi serve.
Ma,se funziona il suggerimento, la faccenda dovrebbe essere più veloce e
pulita.
Cosa ne dici?
Ciao Rodolfo


Ciao Mario,
hai per caso un buon metodo per proteggere i moduli VBA oltre 
alla classica pwd ?
Ciao
Rodolfo


Ciao Rodolfo
Scusa se non ti ho risposto più celermente.
Per quanto riguarda le variabili interne non mi và di usarle perchè sono
accessibili ad altri programmi ( tipo gli USER) per cui se penso ad un
programma "da vendere" voglio evitare "infiltrazioni e rogne" con altri
applicativi, avrai notato che spesso alcuni programmatori lisp usano queste
variabili nelle loro funzioni.
Per quanto riguarda la scrittura dei dati su un file esterno mi sembra una
buona idea ma solo per la memorizzazione di dati o di impostazioni da
salvare e trasferire su un altro disegno.
Mi somo orientato sulle entità DICTIONARY (che non centra niente con il
dizionario delle parole ortografiche), entità non grafica in grado di
archiviare dati estesi (coppie puntate) e che viene registrata col disegno
(per cui persiste tra una sessione e l'altra).
Si crea un dizionario, si inseriscono i dati e si pescano quando servono o
eventualmente si aggiornano. (sto ancora studiandoci sù ma ci sono quasi) ci
sono tra l'altro un paio di funzioni vlax-non ricorddo per la scrittura e
l'aggiornamento dei dati in un dizionario ).
Sull'help c'è un buon esempio e Giovanni anzani mi ha spedito una cosa sui
dizionari simile (se ti serve...).
Per cui si può fare una funzione sia in lisp che in vba (ma di vba non sono
io che me ne occupo, ne so poco o niente ) più orientato al niente)) che
scriva e legga i dati così da utilizzare l'interfaccia di vba.
Da quello che ho studiato su vba trovo farraginoso il modo di lavorare in
autocad rispetto al lisp (punto di vista) ma fare applicativi solo in vba
sembra in ogni caso più lungo ( anche come linee di codice).
Cmq staimo cercando di saltare il tutto utilizzando ObiectDCL, un ambiente
di sviluppo ad oggetti (più dei dcl) per interfacce grafiche per autocad.
Gestito tutto in lisp con un arx che fa da tramite per lo scambio dei dati.
Lo sto guardando proprio in questi giorni).
Ci sono anche esempi di Domenico Pisano. Ti consiglio di darci un'occhiata e
perderci una giornata a vedere gli esempi. 
www.obiectdcl.com
Ciao Mario Scavroni