guido.bonin

La programmazione e Civil 3D

Valuta Questa Inserzione
Iniziamo con il dire che non sono un programmatore professionista, ma un dilettante moolto interessato.

Giusta premessa, poiche' accettero' con piacere le eventuali rettifiche, gli approfondimenti e i consigli a quanto scrivero' su questo tema.

Come vi ho detto, questa estate ho passato buona parte delle mie vacanze (per risolvere un problema e consegnare un lavoro) a "trafficare" con la programmazione di Civil 3D nella sua modalita' piu' elementare (il VBA), ma accessibile a tutti.

Altra premessa.
Autodesk mette a disposizione diversi strumenti per personalizzare e potenziare le sue applicazioni, alcuni dei quali pensate per i professionisti (che fanno capo all'ADN - Autodesk Developer Network), alcune incluse in tutte le versioni di AutoCAD (e di Civil 3D per quanto ci riguarda).

Per i PRO, acquistare un account ADN da' una serie di bonus notevoli (come l'avere accesso a molti software - per testare le proprie applicazioni, avere notizie sulle versioni in fase di sviluppo, avere accesso a eventi e webcast specifiche per sviluppatori e, non ultima, la possibilita' di avere accesso a librerie piu' complete per lo sviluppo sulle piattaforme Autodesk). Di fatto si stipula con Autodesk un contratto in cui si dichiarano le proprie intenzioni (in fatto di sviluppo) e si firmano alcuni NDA (Non Disclosure Agreements) per impegnarsi a non divulgare notizie riservate (tutto o quasi quello che circola sul sito extranet dedicato).

Per tutti, ci sono gli strumenti che trovate dentro l'installazione standard di Civil 3D, che sono gia' molto potenti, tra l'altro.

Scendendo un po' nel dettaglio, per quanto attiene ai linguaggi di programmazione che si possono usare, possiamo usare alcune informazioni gia' riportate sulla pagina Autodesk dello sviluppo di Civil 3D:

Tralasciando lo storico (..c'e' dalla versione 2.18 di AutoCAD...), ma sempre valido LISP, che serve piu' che altro per la perrsonalizzazione delle funzioni di AutoCAD (non degli oggetti Civil 3D), il primo strumento che ci permette di interfacciarci e manipolare efficacemente gli oggetti Civil 3D e' il VBA, il Visual Basic for Applications .

Questo linguaggio, come forse potreste aver sentito, e' in "via di estinzione"; in pratica la Microsoft non lo supporta piu' e non lo sviluppa ormai dal 2007, in favore del piu' recente VSTA (Visual Studio Tools for Applications, o VSTO, Visual Studio Tools for Office).
I problemi principali pare che siano se si usino le versioni a 64 bit (quindi per ora AutoCAD e Map 3D, Civil 3D prossimamente...) poiche' non sono supportate dal VBA.
Il nuovo strumento (VSTA), di fatto utilizza alcune delle tecnologie che fanno parte della serie di prodotti che Microsoft racchiude nella piattaforma .NET (quindi Visual Basic .NET e Visual C# - "C Sharp").
Non ho esperienza diretta e mi pare che per ora il VSTA su prodotti Autodesk non sia di nostro interesse.

Invece molto interessanti sono i linguaggi della piattaforma .NET (VB.NET e C#), che permettono di ottenere dei grossi vantaggi prestazionali (vi ricorderete, se avete usato la versione 2007 di Civil 3D, quando il service pack 3 comporto' una notevole riduzione nei tempi di creazione del modellatore), oltre ad essere pienamente supportati da Microsoft.

Questi linguaggi sono anche l'elemento di congiunzione agli strumenti usati dai professionisti, cioe' i vari C++ (che poi in ambiente Autodesk comportano l'uso delle librerie ObjectARX e la scrittura dei relativi derivati - scusate se sono vago, ma qui entro in un campo per me poco noto). Qui si possono ottenere le massime prestazioni e il controlllo sul codice e sulla gestione del software.

Come viene detto nella webcast e nella pagina gia' citata relativa allo sviluppo di Civil 3D, non tutti gli "oggetti" del modello di Civil 3D sono richiamabili e utilizzabili in fase di programmazione, cioe', per dirlo come e' corretto in questo ambito, le API (Application Programming Interfaces, le interfacce per la programmazione dell'applicazione) espongono solo alcuni elementi.
Per essere ancora piu' concreti, se usate VBA potete operare su Punti, Superfici, Tracciato, Modellatore, Profili (e altro), mentre con .NET (per ora) le superfici, per esempio, non sono manipolabili direttamente.

E' comunque conferrmato che le API per la piattaforma .NET sono quelle in crescita piu' rapida ed e' consigliato, da Autodesk, che se state partendo da zero, questa e' la strada da intraprendere.

Moltio dettagli li scopriremo e li impareremo insieme (spero).

Vi lascio il link del forum ufficiale di Autodesk in materia e uno dei blog specifici per sviluppatori in ambito Civil 3D.

Per oggi chiudo cosi' questo lunghissimo post, che serve piu' che altro a iniziare il discorso e a fare un po' di chiarezza.
A tale proposito ho aperto una nuova area sul forum dal titolo (emblematico...) "programmazione".

Invia "La programmazione e Civil 3D" a Digg Invia "La programmazione e Civil 3D" a del.icio.us Invia "La programmazione e Civil 3D" a StumbleUpon Invia "La programmazione e Civil 3D" a Google

Categorie
Generale ,‎ Annunci e novità

Commenti

  1. L'avatar di rcolosimo
    Sono sempre stato interessato alla programmazione VBA, anche se finora ho fatto solo delle routine per excel. Visto che hai testato .NET, come ti sembra il passaggio, difficile o fattibile?
  2. L'avatar di guido.bonin
    In realta' con .NET sono ancora agli inizi.
    Sto cercando di iniziare modificando una delle subassembly che vengono fornite con Civil 3D di base (il file con tutto il sorgente sta nella cartella di installazione: nella mia installazione e' la cartella C:\Program Files (x86)\AutoCAD Civil 3D 2010\Sample\Civil 3D API\C3DStockSubAssemblies\Subassemblies).

    Ti consiglio di dare un'occhiata al video che ho citato nel blog, dove fa vedere come si fa una piccola procedura sia in VBA che in VB.NET: serve Visual Studio (ma credo che sia sufficiente anche VB.NET Express edition che e' gratis e non da' problemi di "uso di software pirata" se si vuole provare in tranquillita': in pratica con quello che hai nella installazione base si ha tutto quello che serve).

    Ripeto, non e' una cosa adatta a tutti gli utenti, ma se si vuole tirare fuori qualche cosa di piu' dal software e' la via giusta.
    Se hai fatto delle macro in Excel penso che non dovresti faticare troppo.
  3. L'avatar di rcolosimo
    Insomma meglio cimentarsi direttamente con VB Express, lasciando perdere VBA?
  4. L'avatar di guido.bonin
    mah, con VBA alla fine si fanno parecchie cosette.
    Dipende da quello che si deve fare (vedere se si puo' fare con VBA e/o con .NET) e, perche' no, se si puo' fare con .NET.

    Io per ora ho "fatto" con VBA, non senza fatica (molte cose non le sapervo fare), ma alla fine ho risolto.
    Il programma e' ora lavorare con .NET, se possibile (anche se e' + macchinoso, richiedendo piu' passaggi poiche' non e' "interno")