06 aprile 2026

Novità in AutoCAD 2027: Autodesk Assistant, opera con i dati degli oggetti


Finalmente qualcosa di davvero utile nella nuova release di AutoCAD 2027.
Autodesk Assistant, il Chatbot basato su IA ora può operare con gli oggetti del disegno...


Nato come add-on dell'help nella versione 2023.1,  si è poi via via perfezionato fino a questa nuova implementazione che ne fa uno strumento di IA davvero utile.

Adesso, oltre che rispondere con informazioni sull'utilizzo dei comandi e procedure di disegno, può interagire con gli oggetti del disegno selezionandoli in base a richieste dirette dell'operatore o in base a ragionamenti basati sui dati stessi degli oggetti.

Autodesk Assistant utilizza il protocollo MCP per fornire all'LLM dati attuali del disegno ottenendo così risposte basarte sui dati logici e geometrici degli oggetti presenti nel disegno.

L'icona evidenziata è quella per avviare Autodesk Assistant

L'unica azione che può compiere nell'editor grafico è la selezione oggetti.
Non sono supportate operazione di creazione o modifica degli oggetti, nemmeno le voci delle tables cioè layers e stili  vari.

In compenso viene suggerito come fare quanto richiesto, anche tramite l'uso di programmi AutoLISP generati al volo.
Inoltre può eseguire varie operazioni con i dati geometrici e logici degli oggetti.

Ma vediamolo in azione, testando la funzionalità scrivendo  richieste (prompt) all'interno dell'apposita casella all'interno del pannello che si richiama con i comando ASSISTANTOPEN.

Selezione oggetti

Iniziamo con una richiesta molto semplice

prompt :

"Seleziona tutti gli oggetti di colore magenta"

la risposta di Autodesk Assistant nell'aposito pannello.

La IA seleziona correttamente gli oggetti e fornisce anche un log riguardo l'azione compiuta giustificando il risultato ottenuto.

Selezione oggetti con esclusione

anche il "tutto tranne ..." funziona
prompt:
"seleziona tutti gli oggetti di colore magenta tranne i cerchi"


Selezione in base a regole geometriche


Nell'animazione seguente si vede il risultato generato dal seguente prompt:
"seleziona le linee orizzontali presenti nel disegno"

L'animazione mostra il pannello in cui si può leggere quello che potremmo chiamare un ragionamento o dimostrazione del risultato finale. Nell'area grafica le linee orizontali sono selezionate.


Calcoli con dati degli oggetti

Abbiamo visto nell'esempio precedente come la IA ha accesso ai dati geometrici degli oggetti che può memorizzare ed utilizzare per confronti e calcoli.
prompt:
"calcola la lunghezza di ogni linea presente sul layer 0 e poi calcola il valore medio delle lunghezze"

Di seguito l'intero output in risposta al prompt precedente che mostra i vari passaggi del 'ragionamento', informazioni sulle singole linee di cui calcolare la media delle lunghezze.
 


Estrazione dati da blocchi e ordinamento

Nel classico disegno di esempio fornito con AutoCAD ("floor plan sample.dwg") ho immesso questo altro prompt.

prompt:
"crea una tabella che contiene l'elenco dei punti di inserimento di tutti i blocchi RMNUM presenti nel disegno inserendo la coordinata X e Y del punto di inserimento del blocco"
Questa è la risposta dell'IA:
Perfetto! Creerò una tabella con l'elenco dei punti di inserimento di tutti i blocchi RMNUM presenti nel disegno. Ho già i dati dai risultati precedenti, quindi posso creare immediatamente la tabella.

## Tabella Punti di Inserimento Blocchi RMNUM

| N° | Handle | Coordinata X | Coordinata Y |
|----|--------|--------------|--------------|
| 1 | A06F | 1230.42 | 3176.29 |
| 2 | A072 | 1437.97 | 3043.32 |
| 3 | A075 | 1256.44 | 2816.30 |
| 4 | A078 | 1230.39 | 2996.30 |
| 5 | A07B | 1437.97 | 2944.32 |
...
| 97 | A19E | 3181.01 | 2928.64 |
| 98 | A1A4 | 2900.28 | 3210.97 |
| 99 | AFC4 | 1437.97 | 3363.33 |

## Riepilogo
✅ **Totale blocchi RMNUM trovati**: 99  
✅ **Coordinate estratte**: Tutte le coordinate X e Y dei punti di inserimento  
✅ **Range coordinate X**: da 1230.33 a 3267.33  
✅ **Range coordinate Y**: da 1336.85 a 3364.33  

La tabella mostra tutti i blocchi RMNUM presenti nel disegno `Floor Plan Sample.dwg` con le rispettive coordinate di inserimento arrotondate a due decimali per una migliore leggibilità.
Come si vede l'approccio è quello tipico degli LLM attuali che tutti conosciamo.
Un primo mesaggio riepiloga quello che farà e quello che ha capito in base al prompt.
Poi vediamo il risultato, ci sono i dati incolonnati di 99 blocchi "RMNUM".
Ho inserito solo alcune righe per comodità ma li ha contati tutti.

L'IA di sua iniziativa ha inserito una colonna relativa all'handle  (un identificatore univoco) del blocco.
Al termine un riepilogo dei risultati.

Tentativo di creazione di oggetti

Ho rischiesto poi a Autodesk Assistant di inserire nel disegno quella tabella. La risposta è stata che non era possibile. Ne ho approfittasto allora per chiedere esplicitamente se potesse creare oggetti grafici:

prompt:
"puoi creare oggetti grafici nel disegno ?"
Questa la risposta:

No, non posso creare oggetti grafici nel disegno corrente. Gli strumenti a mia disposizione mi permettono solo di:

## ✅ Operazioni supportate:
- **Interrogare** oggetti esistenti nel disegno (linee, blocchi, testi, ecc.)
- **Visualizzare e selezionare** oggetti esistenti
- **Analizzare** proprietà e caratteristiche degli oggetti
- **Confrontare** disegni con template per verifiche di standard
- **Navigare** nel disegno (zoom, selezione)

## ❌ Operazioni NON supportate:
- **Creare** nuovi oggetti grafici (linee, cerchi, blocchi, tabelle, ecc.)
- **Modificare** oggetti esistenti (spostare, ruotare, scalare)
- **Eliminare** oggetti
- **Inserire** blocchi o altri elementi
- **Creare tabelle** AutoCAD

## Per creare la tabella che hai richiesto:
Dovrai utilizzare direttamente i comandi di AutoCAD:
- Comando `TABLE` per creare una tabella manualmente
- Comando `DATAEXTRACTION` per estrarre automaticamente i dati dei blocchi
- Oppure utilizzare AutoLISP o altri strumenti di automazione di AutoCAD

Posso però continuare ad aiutarti con l'analisi dei dati esistenti o fornirti le informazioni necessarie per creare manualmente la tabella. Hai bisogno di altri dettagli sui blocchi RMNUM?

Le ultime due frasi, come si vede,  sono propositive, Autodesk Assistant suggerisce i comandi da utilizzare per ottenere la tabella come oggetto nel disegno e si rende pronto e disponibile a fornire ancora aiuti riguardo l'analisi dei blocchi.

Rinomina layers

Sebbene sia chiaro quello che può e quello che non può fare, le richieste 'impossibili' ad Autodesk Assistant comunque restituiscono un risultato utile.
Nell'esempio seguente si richiede di rinominare alcuni layer. Sappiamo che non può fare modifiche al disegno ma il risultato per la prima volta mostra una soluzione trasmite AutoLISP.

prompt:
"rinomina tutti i layer il cui nome inizia con la lettera E sostituendo alla lettera E iniziale la stringa ELET"

questa la risposta 

I understand you want to rename all layers whose names start with the letter "E" by replacing the initial "E" with "ELET". However, I cannot perform this action because the current system doesn't support modifying layer properties.

Let me show you which layers would be affected by this change:

## Layers che iniziano con "E" (da rinominare):

| Layer Attuale | Nuovo Nome Proposto | Handle |
|---------------|---------------------|--------|
| **E-B-SHEL** | **ELET-B-SHEL** | AB10 |
| **E-B-GLAZ** | **ELET-B-GLAZ** | AB11 |
| **E-F-DOOR** | **ELET-F-DOOR** | AB14 |
| **E-B-CORE** | **ELET-B-CORE** | AB15 |
| **E-F-STAIR** | **ELET-F-STAIR** | AB16 |
| **E-B-ELEV** | **ELET-B-ELEV** | AB17 |
| **E-F-TERR** | **ELET-F-TERR** | AB18 |
| **E-F-CASE** | **ELET-F-CASE** | AB19 |
| **E-F-SILL** | **ELET-F-SILL** | AB1A |
| **E-B-MULL** | **ELET-B-MULL** | AB1B |
| **E-C-HEAD** | **ELET-C-HEAD** | AB1C |
| **E-B-FURR** | **ELET-B-FURR** | AB1D |
| **E-F-PLMB** | **ELET-F-PLMB** | AB1F |
| **E-S-COLM** | **ELET-S-COLM** | AB23 |
| **EMPLOYEE** | **ELETMPLOYEE** | AC89 |

**Totale layer da rinominare**: 15 su 29

## ❌ **Limitazione del sistema**
Non posso eseguire questa operazione perché il sistema attuale non supporta la modifica delle proprietà dei layer (i `writableFields` sono vuoti nello schema).

## 🔧 **Come eseguire questa operazione manualmente:**

### 1. **Metodo Layer Properties Manager**
```
1. Digita LA o LAYER
2. Per ogni layer che inizia con "E":
   - Doppio clic sul nome
   - Sostituisci "E" con "ELET"
   - Premi Invio
```

### 2. **Metodo RENAME Command**
```
1. Digita RENAME
2. Seleziona "Layer"
3. Per ogni layer:
   - Old name: E-B-SHEL
   - New name: ELET-B-SHEL
   - Ripeti per tutti
```

### 3. **Script AutoLISP automatizzato**
```lisp
(defun c:RenameELayers ()
  (setq layerList '("E-B-SHEL" "E-B-GLAZ" "E-F-DOOR" "E-B-CORE" 
                    "E-F-STAIR" "E-B-ELEV" "E-F-TERR" "E-F-CASE" 
                    "E-F-SILL" "E-B-MULL" "E-C-HEAD" "E-B-FURR" 
                    "E-F-PLMB" "E-S-COLM" "EMPLOYEE"))
  (foreach layer layerList
    (if (tblsearch "LAYER" layer)
      (progn
        (setq newName (strcat "ELET" (substr layer 2)))
        (command "RENAME" "LA" layer newName)
        (princ (strcat "
Renamed: " layer " -> " newName))
      )
    )
  )
  (princ "
Layer renaming completed!")
)
```

### 4. **Usando Layer Translator (LAYTRANS)**
Se hai un template con i nomi corretti, puoi usare LAYTRANS per mappare i layer.

**Raccomandazione**: Il metodo AutoLISP è il più efficiente per rinominare molti layer contemporaneamente. Vuoi che ti spieghi come utilizzare lo script AutoLISP?

Nella risposta vediamo ben 4 soluzioni: 
usando il comando Gestione Layer, il comando Rinomina, il comando Layertrans e addiruttura un programma AutoLISP creato ad hoc. Il programma è corretto e rinomina i layer.

Riconoscimento di pattern testuali

Un altro esperimento che ho eseguito è quello di chiedere  di selezionare i testi che rappresentao o contengono una data.

Ho utilizzato un disegno di esempio fornito con AutoCAD  "Mechanical - Multileaders.dwg" ed ho esploso il cartiglio posto in basso a destra facendo trasformare gli attributi in testi, in maniera che possano venire selezionati dalla IA tramite il comando BURST (in Express Tools).
Questo il prompt:
"seleziona i testi che indicano una data"

di seguito la risposta con la conseguente seleziona - corretta - degli oggetti::
Ho selezionato con successo tutti i testi che indicano date nel disegno AutoCAD. Ho trovato e selezionato **6 oggetti di testo** che contengono date:

## **Testi con date selezionati:**

- **01JUL06** - Data in formato giorno/mese/anno
- **(08:49 29/04/04)** - Data e ora in formato completo
- **25JUL06** - Data revisione
- **16APR06** - Data revisione  
- **21APR06** - Data revisione
- **29APR06** - Data revisione

Questi testi sembrano essere parte di un cartiglio tecnico o di una tabella delle revisioni del disegno, contenenti date importanti per la documentazione del progetto. Tutti gli oggetti sono ora **selezionati e visualizzati** nella finestra di AutoCAD.

Le date sono in diversi formati:
- **DDMMMYY** (es. 01JUL06, 25JUL06)
- **DD/MM/YY con orario** (es. 08:49 29/04/04)
Il risultato è ottimo, vengono riconosciute, come evidenzia nell'output sopra, date in formato diverso ed anche il loro contesto.

Nell'immagine segunete sono indicate con le frecce.  


Selezione in base a valori attributi

Ritornando ai blocchi del disegno di esempio "Floor plan sample.dwg" ho provato ad eseguire una selezione oggetti più complessa:
prompt:
"seleziona i blocchi RMNUM che hanno come valore dell'attributo NUMBER un numero pari"

Questa è la risposta:

Ho selezionato e visualizzato tutti i 99 blocchi RMNUM nel disegno, ma non posso filtrarli in base ai valori degli attributi.

## 🔧 **Alternative per la selezione basata su attributi:**

### 1. **Comando ATTEXT (Attribute Extraction)**

```

1. Digita ATTEXT

2. Estrai i dati degli attributi in un file

3. Identifica manualmente i numeri pari

. Seleziona i blocchi corrispondenti

```


### 2. **Comando FIND con filtri attributi**

```

1. Digita FIND (Ctrl+F)

2. Cerca nell'attributo NUMBER

3. Usa espressioni regolari per numeri pari

```


### 3. **Script AutoLISP personalizzato**

```lisp

(defun c:SelectEvenRMNUM ()

  (setq ss (ssget "X" '((0 . "INSERT")(2 . "RMNUM"))))

  (setq evenBlocks (ssadd))

  (if ss

    (progn

      (setq i 0)

      (repeat (sslength ss)

        (setq ent (ssname ss i))

        (setq entData (entget ent))

        (setq attList (mapcar 'entget (vlax-invoke (vlax-ename->vla-object ent) 'GetAttributes)))

        ; Controlla attributo NUMBER per valori pari

        (foreach att attList

          (if (and (= (cdr (assoc 2 att)) "NUMBER")

                   (= (rem (atoi (cdr (assoc 1 att))) 2) 0))

            (ssadd ent evenBlocks)

          )

        )

        (setq i (1+ i))

      )

      (sssetfirst nil evenBlocks)

      (princ (strcat "

Selected " (itoa (sslength evenBlocks)) " blocks with even NUMBER values."))

    )

  )

)

```

### 4. **Data Extraction (DATAEXTRACTION)**

```

1. Comando DATAEXTRACTION

2. Seleziona blocchi RMNUM

3. Estrai attributo NUMBER

4. Filtra i valori pari in Excel

5. Identifica gli handle dei blocchi

6. Seleziona manualmente

```


### 5. **Quick Select con filtri avanzati**

```

1. Comando QSELECT

2. Object type: Block Reference

3. Name: RMNUM

4. Usa filtri avanzati per attributi (se disponibili)

```

**Raccomandazione**: Lo script AutoLISP è la soluzione più efficace per questo tipo di selezione basata su valori di attributi. Vuoi che ti spieghi come implementare e utilizzare lo script AutoLISP?

Come si vede Autodesk Assistant da subito ammette che non riesce a fare una selezione come richiesto ma suggerisce ben 5 metodi alternativi.

In realtà nessuno dei 5 metodi seleziona i blocchi aventi come attributo un numero pari. Il programma AutoLISP non funziona perchè contiene un errore: si passa alla funzione entget (che lavora con <ename> cioè identificativi di entità) un dato di tipo VLA- object, evidentemente incompatibile

(mapcar 'entget (vlax-invoke (vlax-ename->vla-object ent) 'GetAttributes)))

Sono questi i rischi degli LLM, strumneti basati su 'meccanismi' probabilistici e statistici che propinano risposte fortemente attinenti all'ambito della richiesta ma che, in alcune occasioni, sono errate o almeno noi le consideriamo errate, inutilizzabili per i nostri fini.


Verifica degli Standard di disegno

Come mostrato all'interno del pannello di Autodesk Assistant, appena lo si apre , è possibile eseguire una verifica degli Standard  di disegno confrontando il disegno corrente con un file DWG, DWT o DWS di cui bisogna specificare il percorso.

In un disegno molto semplice ho alterato il font di uno stile di testo in uso.

prompt:

"confronta gli standar di questo disegno con gli standard del disegno C:\Users\frame\Desktop\disegno base.dwg"

Questa l arisposta: 

Perfetto! Ho completato l'analisi degli standard. Ecco il risultato:


## Standards Issues


| Issue | Standard |
|-------|----------|
| ❌ Font mismatch in text style 'TITOLI': current uses `arial.ttf` | `calibri.ttf` |
| ❌ [Text entity uses non-standard text style 'TITOLI'](mcp://autocad-in-process-mcp/manipulateDrawingCanvas?params=%7B%22operationsJson%22%3A%5B%7B%22operation%22%3A%22showme%22%2C%22handles%22%3A%5B%2226A%22%5D%7D%5D%7D) | Font should be `calibri.ttf` |


### Riepilogo dell'analisi


**Problemi trovati**: 2 problemi di conformità agli standard


**Dettagli**:
- **Stili di testo**: Lo stile "TITOLI" nel disegno corrente utilizza il font `arial.ttf` invece del font standard `calibri.ttf`
- **Entità di testo**: 1 entità di testo utilizza lo stile "TITOLI" non conforme


**Elementi conformi**:
- ✅ **Layer**: Tutti i layer sono conformi agli standard
- ✅ **Stili di quota**: Tutti gli stili di quota sono conformi agli standard
- ✅ **Tipi di linea**: Tutti i tipi di linea sono conformi agli standard


**Raccomandazioni**:
1. Modificare il font dello stile di testo "TITOLI" da `arial.ttf` a `calibri.ttf`
2. Verificare che il testo mostrato utilizzi il font corretto dopo la modifica dello stile

Assistant ha individuato la difformità e suggerisce come correggerla.


Simulare un Overkill

Ho chiesto alla IA di selezionare i cerchi che si intersecano e sono quindi superfli per l'individuazione di una posizione. Non è raro questo tipo di evento magari in disegni con oggetti che materializzano elementi di rilievi topografici.

Nell'esempio che ho creato  (vedi nell'immagine seguente) c'è il caso in cui ben 4 cerchi si intersecano in una singola posizione. Dnque 3 sono di troppo.


Il prompt che ho creato è molto discorsivo ma forse sarebbe dovuto essere più dettagliato e strutturato come un algoritmo, per aiutare LLM a comprendere meglio. Manca ad esempio la misura oltre la quale si può considerare una sovrapposzione.

Come si vede dall'immagine la selezione dei cerchi è fallita nella posizone in cui ci sono 4 cerchi. 

Ho riscontrato che il risultato finale di questo tipo di selezione è influenzato dall'ordine di creazione degli oggetti. Se i cerchi sovrapposti fossero stati creati tutti consecutivamente il risultato sarebbe stato corretto. Ma questo raramente avviene nella realtà.

Scrivere un prompt efficace potrebbe richiedere tempo. Questo è giustificato quando si è in presenza di  un alto numero di elementi da modificare ed una modifica a mano richiederebbe più tempo che scrivere un prompt.

Resta il fatto che - in situazioni mediamente complesse - non si sa mai quando la risposta dell'LLM (o la selezione) è corretta. Bisogna pertanto trovare metodi per fare vrifiche veloci.

prompt:

"nel disegno ci sono dei cerchi che rappresentano delle posizioni.

In alcuni casi per errore ci sono più cerchi vicini tra loro che rappresentano una posizione.

Vorrei eliminare i cerchi superflui in maniera da individuare ogni posizione con un solo cerchio.

Seleziona i cerchi che si sovrappongono in maniera che possa cancellarli"

questa la risposta con la selezione, come si vede nell'immagine precedente

✅ **Completato!** Ho selezionato **3 cerchi sovrapposti** che puoi eliminare:


### **Cerchi selezionati per l'eliminazione:**


| Cerchio | Posizione | Motivo |

|---------|-----------|--------|

| `271` | (23.65, 15.64) | Sovrapposto al cerchio `26C` |

| `273` | (26.82, 10.62) | Molto vicino al cerchio `272` |

| `275` | (45.87, 13.22) | Sovrapposto al cerchio `26E` |


### **Prossimi passi:**

1. I cerchi sono ora **selezionati** (evidenziati)

2. Puoi **eliminarli** premendo `Canc` o usando il comando `ERASE`

3. Questo lascerà **un solo cerchio per ogni posizione**


### **Risultato finale:**

- **Prima:** 14 cerchi (alcuni sovrapposti)

- **Dopo l'eliminazione:** 11 cerchi (uno per posizione)

Funzionalità del pannello

Tramite delle icone del pannello di Autodesk Assistant si offre anche la possibilità di salvare i prompt in una libreria per poi poterli riutilizzare successivamente.

Nell'animazione seguente si vedono nell'ordine: la sezione della chat, la libreria di prompt, i prompt immessi nelle varie sessioni e la sezione delle impostazioni con la possibilità di disabilitare la IA che, come si vede, è in fase di "Tech Preview".


Conclusione

Uno strumento davvero utile che non potrà che migliorare con il tempo, e in breve tempo. 

Sebbene adesso sia limitato alla selezione è facile richiedere la scrittura di una procedura AutoLISP o uno script che possa servire ad eseguire modifiche e creazioni di oggetti.

Per i disegnatori che in passato hanno speso ore e ore a compiere operazioni ripetitive e che nei momenti di delirio cominciavano a chiedersi come mai lo stramaledetto CAD non comprendesse che doveva eseguire in automatico la sequenza di stesse operazioni ormai reiterate da ore, la chat diventa un nuovo elemento di sfogo (prime c'erano solo  le bestemmie) che può dare comunque  risposte costruttive.

Speriamo che nella prossima release si arrivi a creare e modificare oggetti e, poi in futuro, a generare geometrie basate su rappresentazioni tipologiche standard ,da rifinire in base al prompt, e che si adeguino al contesto del disegno corrente.

Non bisogna dimenticare che questo strumento è in fase di "Tech preview" pertanto nessuno garantisce i rrisultati.

Nessun commento:

Posta un commento