Hello World: ovvero cosa serve veramente per far funzionare un’addin managed ObjectARX

Negli Autodesk Labs è presente l'immancabile applicazione Hello World con cui configurare correttamente l'ambiente di sviluppo.

Nel Lab vengono indicate le DLL da linkare e gli eventuali attributi da aggiungere alle classi o ai metodi come in particolare il CommandMethod con cui definire un comando custom all'interno di AutoCAD.

Ciò che il lab non dice sono però alcuni accorgimenti fondamentali per far funzionare veramente tutto riducendo gli errori. Sono piccole configurazioni che però mi hanno fatto perdere giornate di lavoro.

  1. I metodi associati ad un CommandMethod devono essere pubblici e non devono restituire nessun valore (devono cioè essere delle sub in VB.Net o restituire void in C#)
  2. Oltre a aggiungere le reference alle due librerie acadmgd.dll e acadmgdb.dll è fondamentale impostare la proprietà Copy Local a False altrimenti quando invocate il comando custom AutoCAD vi dice che non esiste nessun comando con quel nome
  3. Un'ultima cosa che mi ha fatto perdere il sonno per giorni… Impostate nella variabile PATH il percorso [program folder]Autocad 2008 altrimenti potete scordarvi di utilizzare l'ereditarietà nelle form…
Share

Disabilitare l’invio del report di errore ad Autodesk in caso di crash di AutoCAD

Ogni volta che si manda in crash AutoCAD  viene visualizzata la form per inviare la segnalazione di errore ad Autodesk.

Nonostante le mille attenzioni che si possono avere per non mandare in crash AutoCAD ciò in realtà accade diverse volte al giorno soprattuto in fase di sviluppo e debug.

Basta dare un'occhiata al video intitolato "10 EASY ways to crash your AutoCAD addin" per farsene un'idea (il video è scaricabile da qui).

Per evitare questa richiesta si può utilizzare il comando "ReportError" che gestisce la corrispondente variabile binaria per abilitare/disabilitare l'invio del report di errore.

ReportError = 0 -> Non viene visualizzata la form di segnalazione

ReportError = 1 -> Viene visualizzata la form di segnalazione

Share

A breve la traduzione di alcuni post di Kean Walmsley dal blog through-the-interface

Chi è Kean Walmsley?

Come riportato sul suo blog (http://through-the-interface.typepad.com/) Kean ha lavorato in Autodesk sin dal 1995, concentrandosi su supporto alla programmazione, consulenza, formazione ed "evangelism" verso sviluppatori esterni. Ha lavorato in Autodesk in svariate nazioni: ha cominciato la sua carriera in Inghilterra e poi, spostandosi ogni 2-3 anni, ha lavorato in Svizzera, Stati Uniti ed India. Attualmente Kean è Senior Manager di Developer Technical Service (DevTech), un gruppo mondiale di guru che forniscono servizi tecnici tramite Autodesk Developer Network (ADN).

Ho avuto l'opportunità di contattarlo per richiedergli supporto tecnico per la soluzione di alcuni problemi presso un mio cliente e ne ho approfittato per chiedergli il permesso di tradurre su questo blog alcuni dei suoi post relativi ad ObjectARX e .NET per cercare di diffondere l'API in Italia e magari creare una comunità italiana specializzata.

Ha accettato con molto piacere quindi a breve inizierò a pubblicare alcuni suoi articoli in questo blog, il che sarà anche per me un'opportunità di approfondimento sui temi tecnici che via via propone.

Grazie!

Share

Hatch too dense (EHatchTooDense) tratteggiando un poligono

In una routine stò disegnando un rettangolo per poi riempirlo con un hatch tratteggiato.

Il più delle volte il codice funziona senza errori ma in alcuni casi ricevo l'errore "EHatchTooDense" ed il rettangolo non viene tratteggiato.

Il problema risiede nella variabile di sistema MaxHatch che determina il numero massimo di linee che possono essere disegnate in un poligono (a default 10.000).

Per sapere il valore corrente della variabile si può usare il comando:

(getenv "MaxHatch")

mentre per impostare il valore

(setenv "MaxHatch" "n")

dove n è compreso tra 100 e 10.000.000 e MaxHatch è case sensitive.
Un valore troppo elevato per la variabile potrebbe causare un degrado di prestazioni nel disegno. Il comando può essere eseguito ovviamente da C# ed il valore resta impostato anche chiudendo AutoCAD.

Leggi l'articolo nella Knowledge base Autodesk.

Share