Newsgroup: it.comp.lang.delphi
Titolo: AutoCAD e Delphi

Scusate se la mia domanda e' banale, ma sono agli inizi con Delphi e la
programmazione windows (ho incominciato gia' con VB ma e' una ciofeca di
linguaggio!)
Vorrei scrivere con Delphi alcune procedure in cui l'output sia un
disegno CAD, direttamente, senza passare da files (ad es. DXF)
transitori, anche se questa puo' essere una soluzione.
Per avere piu' possibilita' che non ci siano "intoppi" nel reperimento
del CAD mi ero orientato su AutoCAD LT (molto facile da trovare e ricco
di funzioni per un "post-editing"), che pero' non ha il supporto VBA e
ObjetctX (che nella versione non LT sono ben documentati) per la
gestione diretta del db.
La domanda e': con Delphi si puo' dire ad un programma (nel mio caso
AutoCAD LT) di fare qualcosa che un operatore potrebbe fare benissimo a
mano (ad es. tirare una linea da un punto ad un altro)? Come?
Qualcuno ha gia' avuto esperienze del genere?
Ciao
--
Doc Hollywood
------------------------------------------------------------------------
Non penso mai al futuro, viene cosi' presto. (A.Einstein)
------------------------------------------------------------------------

 mano (ad es. tirare una linea da un punto ad un altro)? Come?
certo che si può, scusa se ti rispondo un po' in generale ma conosco 
l'argomento solo per grandi linee: cmq se il programma rende disponibili 
(mediante una Type Library) uno o più SERVER DI AUTOMAZIONE OLE (OLE 
AUTOMATION) - in sostanza i vecchi controlli OCX -allora dovresti poter 
vedere nel menù [D6] Component > Import ActiveX Control i relativi 
componenti disponbili. Poi potresti procedere con Create Unit, che avvierà 
in maniera molto potente e trasparente la creazione di una unit Delphi dalla 
type library originale(1).
Una volta incorporato il server OLE in un componente, puoi piazzarlo per es. 
su una form e usare tutti i suoi metodi e proprietà...per scoprire i quali o 
accedi alla documentazione originale del programma (nel tuo caso AUTOCAD) 
oppure li deduci per prove ed errori dal Code Completition e dall'esame 
della unit generata dalla type library.
Con ciò è possibile far fare qualunque cosa al programma originale (banale 
esempio con Word: aprire un istanza non visibile di Word, creare un 
documento, inserirci del testo, fare la correzione ortografica, sillabarlo e 
stamparlo, quindi chiudere l'istanza nascosta di word).
Non sono molto pratico di queste cose ma ci sono un sacco di esempi sul 
motore di ricerca degli sviluppatori: GOOGLE :-)
(1) Cos'è una type library? è uno dei fondamenti della tecnologia OLE2 e 
COM+. E' una serie di dichiarazioni di tipi resi disponibili da un server 
Automation. La cosa più importante è che essa è INDIPENDENTE dal linguaggio 
cioè non è scritta nè in C nè in Pascal (per esempio un tipo di dato PChar 
in pascal diventa un LPSTR in OLE/COM). Con Delphi si possono creare delle 
type library dal menu New > Other... > ActiveX > Type library.
-- 
Mauro Falzari.
"Se guardi nell'abisso, anche l'abisso guarda in te."
(Friedrich Nietzsche)

 l'argomento solo per grandi linee: cmq se il programma rende
disponibili
[cut]
Grazie.
Ora ci provo, anche se non sara' facile: non c'e' manualistica per
AutoCAD LT...


 ....
Non credo che questa strada sia percorribile in quanto AutoCAD LT non ha 
server di automazione disponibili. Infatti per scelta di AutoDESK la 
versione LT non è programmabile, non ha il VBA e nemmeno l'automazione 
esterna, ne il supporto per moduli scritti in C o C++ ne tantomeno il 
linguaggio AutoLISP interno.
Esistono 2 sistemi per far compiere al programma una serie di operzioni 
in sequenza :
1. La creazione di menu personalizzati tramite il mini linguaggio 'DIESEL';
2. L'utilizzo degli script. Che in pratica sono file di testo contenenti 
i comandi da eseguire.
Da un programma Delphi per richiamare una sequenza di comandi puoi 
solamente mandare dei messaggi sulla riga di comando, per far si che 
venga eseguita una voce di menu oppure uno script (creato magari 
dinamicamente dal tuo software).
Se però hai la possibilità di spendere un pò di soldi, visita questo sito :
http://www.drcauto.com/ltfactory/products/lttoolkitmax/index.html
Qui troverai un prodotto che consente ad AutoCAD LT di caricare ed 
eseguire file scritti in AutoLISP o C++.
Il rovesci della medaglia è che ogni versione di AutoCAD LT vuole una 
diversa versione di questo software (es LT 2000, LT 2000i, LT 2002).
Ciao
Roberto

 dinamicamente dal tuo software).
Ecco, proprio questo: come (e se) posso mandare i comandi sulla linea di
comando? Mi basterebbe questo...
