Layer in base attributo

dimasa

Utente poco attivo
Professione: agente
Software: autocad, expcad
Regione: sicilia
Salve, sono alla ricerca di un Lisp o Macro che possa creare in automatico un layer con colore random o anche semplicemente bianco, in base ad un testo contenuto nell'attributo di un blocco.
Cerco di spiegarmi meglio, all'interno di un progetto ho circa 4000 blocchi uguali, in cui sono contenuti 3 attributi, nell'attributo denominato QDR ci possono essere circa 60 nomi differenti, per ogni nome vorrei si creasse in automatico un Layer.
grazie per l'aiuto
 

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, CadWorx, Lisp, VBA. YouTube: roberto portuese
Regione: Sicilia
comando: (CreaLayerDaTag "QDR")
Il programma è compilato, crea i layer esaminando tutti i blocchi e se presente tag QDR crea il relativo layer.
Se nel contenuto del tag è presente un valore non permesso nel nome del layer il comando crea errore.
Saluti
 

Allegati

dimasa

Utente poco attivo
Professione: agente
Software: autocad, expcad
Regione: sicilia
Grazie, funziona perfettamente, ma ovviamente mi ero espresso male ed in modo incompleto, alla creazione dei layer, ogni blocco dovrebbe inserirsi in automatico all'interno del layer corrispondente, attualmente restano tutti sul layer 0
 

dimasa

Utente poco attivo
Professione: agente
Software: autocad, expcad
Regione: sicilia
Ho provato adesso il tuo lisp, ma non funziona del tutto.
- non crea tutti i layer correttamente come lo faceva precedentemente, li crea a saltare (su 63 layer che dovrebbe creare, ne crea 27)
- Inoltre nei layer creati non inserisce tutti i blocchi con quel dato testo.
Grazie per la pazienza e spero che Babbo Natale passi ancora :)
 

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, CadWorx, Lisp, VBA. YouTube: roberto portuese
Regione: Sicilia
Per simulare il comando mi sono dovuto creare un disegno con dei blocchi aventi tag QDR, inserirne una ventina, cambiare il valore dell'attributo, oltre che scrivere il codice.
Manco a dirlo che da me funziona.
Allega il dwg, anche solo la parte dei blocchi con tag QDR, almeno non devo andare a tentoni.
 

dimasa

Utente poco attivo
Professione: agente
Software: autocad, expcad
Regione: sicilia
Per simulare il comando mi sono dovuto creare un disegno con dei blocchi aventi tag QDR, inserirne una ventina, cambiare il valore dell'attributo, oltre che scrivere il codice.
Manco a dirlo che da me funziona.
Allega il dwg, anche solo la parte dei blocchi con tag QDR, almeno non devo andare a tentoni.
Ciao, in allegato il DWG con i blocchi interessati,
ho fatto delle prove, funziona in modo alternato :) , non mi spiego il motivo
- Se carico il lisp, e lo lancio con il comando (CreaLayerDaTag "QDR"), presenta i problemi che ti ho precedentemente esposto, ponendo nel finale la domanda se devo o meno eliminare dei layer.
- oppure, funziona perfettamente e mi apre diverse volte la finestra di supporto di Autocad, (senza un apparente motivo)
- oppure se seleziono tutti i blocchi funziona perfettamente e mi apre altre finestre.

per imparare il lisp pensi possa essere una buona partenza il libro Il Mio Lisp ? mi puoi dare qualche consiglio
 

Allegati

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, CadWorx, Lisp, VBA. YouTube: roberto portuese
Regione: Sicilia
"Il mio lisp" va benissimo per imparare.
Ho sistemato il comando, c'era un errore nell'assegnazione del colore al layer.
Ora il file è editabile, prima di eseguire le operazioni esegue il purge e mette tutte le entità su layer 0.
 

Allegati

dimasa

Utente poco attivo
Professione: agente
Software: autocad, expcad
Regione: sicilia
Fantastico, grazie mille, proverò a fare qualche altra cosa!!!!
 

Cristallo

Utente Standard
Professione: Leggo e confronto
Software: Lettura critica
Regione: Fuori dalla cerchia
Tanto di cappello a Rpor.
Disponibilità estrema e padroneggiamento del lisp a livelli inverecondi :giggle:.

Che tu possa avere un ottimo 2021.