TuttoCAD Forum

TuttoCAD Forum
[ Home | Registrati | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Album Fotografico | Download | | Cerca | FAQ ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 1 - TuttoCAD Software
 AutoLISP
 AutoLisp per eliminare attributi automaticamente

Nota: Devi essere registrato per poter inserire un messaggio.
Per registrarti, clicca qui. La Registrazione è semplice e gratuita!

Larghezza finestra:
Nome Utente:
Password:
Modo:
Formato: GrassettoCorsivoSottolineatoBarrato Aggiungi Spoiler Allinea a  SinistraCentraAllinea a Destra Riga Orizzontale Inserisci linkInserisci EmailInserisci FlashInserisci Immagine Inserisci CodiceInserisci CitazioneInserisci Lista
   
Icona Messaggio:              
             
Messaggio:

  * Il codice HTML è OFF
* Il Codice Forum è ON

Faccine
Felice [:)] Davvero Felice [:D] Caldo [8D] Imbarazzato [:I]
Goloso [:P] Diavoletto [):] Occhiolino [;)] Clown [:o)]
Occhio Nero [B)] Palla Otto [8] Infelice [:(] Compiaciuto [8)]
Scioccato [:0] Arrabbiato [:(!] Morto [xx(] Assonnato [|)]
Bacio [:X] Approvazione [^] Disapprovazione [V] Domanda [?]
Seleziona altre faccine

    
 
   

V I S U A L I Z Z A    D I S C U S S I O N E
giua Inserito il - 06 aprile 2014 : 22:06:37
Buongiorno,
avrei cortesemente bisogno di un aiuto.
Ho la necessità, purtroppo urgente, di eliminare da una serie di DWG tutti gli attributi che hanno una certa etichetta da tutti i blocchi presenti nel disegno.
Faccio un esempio, devo eliminare l'attributo con etichetta DATA da tutti i blocchi (con nomi diversi) presenti nel disegno.
Esiste un file AutoLisp che realizza in un solo colpo questa funzione?

Se lo faccio manualmente con il GESTATTBL su tutti i blocchi del disegno per una serie infinita di disegni ci metto una vita intera....

Grazie per chi potrà aiutarmi.
Giua
20   U L T I M E    R I S P O S T E    (in alto le più recenti)
Terminator Inserito il - 09 aprile 2014 : 12:42:09
A dire la verità non mi piace usare la funzione (command) all'interno di un lisp, dal momento che io l'ho sempre considerata una forzatura. Certe funzioni trovate in rete e adattate, avevano al loro interno dei loop che non accettavano la funzione command. Addirittura le funzioni interne ai reattori non accettano nemmeno i classicissimi entsel, ssget, ecc... Purtroppo non per tutti i comandi esiste l'analoga funzione VLisp.
GP Inserito il - 09 aprile 2014 : 12:10:58
Messaggio inserito da Terminator

... Teoricamente se la funzione non c'è dovrebbe piantarsi subito...


Questo è vero, ma nel caso in questione la funzione esiste, solo che si arrabbia se viene reiterata, non conosco il motivo.
Tempo fa sta cosa mi aveva fatto perdere il sonno...
Terminator Inserito il - 09 aprile 2014 : 09:58:17
Si potrebbe risolvere con un'istruzione del tipo:

(if (< (atoi (getvar "ACADVER")) 17)
(align oggetto '(0 0) '(1 1) '(3 3) '(4 4))
(command "align" oggetto "" "0,0" "1,1" "3,3" "4,4" "" "_y")
)

Dove il numero 17 corrisponde alla versione 2007 e si presume che la funzione (align) sia diventata comando. Da quello che ho visto però, il comando ATTSYNC ancora oggi è un'applicazione arx, che, volendo, si può escludere con opzioni->Apri e salva->Applicazioni ObjectARX->Disattiva caricamento su richiesta. Non ho una 2004 sottomano per confrontare. Mi resta la perplessità del perché al quarto lancio, invece che al terzo o quinto? Teoricamente se la funzione non c'è dovrebbe piantarsi subito...
GP Inserito il - 09 aprile 2014 : 09:15:00
"ERRORE IRREVERSIBILE: I comandi non possono essere nidificati più di 4"

L'errore si manifesta quando in un lisp si lancia da comando un'istruzione che non è un comando, mi spiego:

se nel codice scriviamo
(command "align" oggetto "" "0,0" "1,1" "3,3" "4,4" "" "_y")
il programma darà errore al quarto lancio in quanto ALIGN non è un comando, ma una funzione di GEOM3D.arx, bisogna quindi usare questa sintassi:
(align oggetto '(0 0) '(1 1) '(3 3) '(4 4))

Venendo al problema specifico di questo thread, è lecito pensare che ATTSYNC nella 2004 fosse una funzione, mentre nella 2008 sia diventato un "vero" comando.
giua Inserito il - 08 aprile 2014 : 15:12:24
EUREKA

Mi sono appoggiato su un collega che ha l'AUTOCAD 2008 (non sia mai di essere all'ultima moda ....) e FUNZIONA!

GRAZIE ANCORA DELLA GENTILEZZA
Giua
Terminator Inserito il - 08 aprile 2014 : 14:55:20
AutoCAD 2012, tu non hai modo di usare una versione un po' più recente? Ho riprovato con le etichette USERF*, cancellazione normale.
giua Inserito il - 08 aprile 2014 : 14:34:54
Devo eliminare le etichette USERF1 USERF2 USERF3 USERF4, ma mi sa che il problema è legato alla versione di Autocad.....
Sono troppo arcaico. Tu che versione di Autocad hai usato?
Grazie comunque! Sei troppo gentile!
Giua
Terminator Inserito il - 08 aprile 2014 : 14:12:35
Ho provato con etichette a caso, nessun tipo di problema, il lisp cancella regolarmente tutto ciò che gli dico.
Terminator Inserito il - 08 aprile 2014 : 14:08:43
Aspetta, che etichette bisogna eliminare?
Terminator Inserito il - 08 aprile 2014 : 13:26:03
Uhm...le funzioni lisp sono rimaste le stesse dalla versione 2000, proprio per evitare problemi di compatibilità, ma evidentemente non è così...
aforza Inserito il - 08 aprile 2014 : 13:13:48
Ciao,

@giua si sempre casini con versioni precedenti, il grande terminator... arriva sempre ...

Ciao
Terminator Inserito il - 08 aprile 2014 : 13:05:28
Passami un pezzo di disegno, dal momento che è un tipo di errore che non mi era mai capitato.
Terminator Inserito il - 08 aprile 2014 : 12:22:37


Scarica allegato:

elimatt.rar
1,25 KB
giua Inserito il - 08 aprile 2014 : 08:52:03
Grazie aforza,
il problema è questo.
Utilizzo un applicativo, elettrico, che lavora su Autocad. In questo applicativo ci sono dei blocchi che rappresentavo i "fili" e possono avere un qualunque nome, perchè legato alla pagina del disegno, al nome del DWG ed a altro.
Da una certa versione del software in poi al blocco "filo" sono stati aggiunti quattro attributi (le quattro etichette sono sempre quelle), questi quattro attributi mandano in crisi alcuni automatismi di chi, come noi, elabora il DWG con una versione precedente del software.
Ora, ho verificato che eliminando manualmente questi quattro attributi con il comando GESTATTBL tutto ritorna magicamente a funzionare ma i fili sono innumerevoli e l'operazione diventa lunghissima con il rischio di dimenticare alcuni fili e quindi di falsare le elaborazioni.
E' per questo motivo che mi serviva un lisp che eliminasse automaticamente questi 4 attributi (di etichetta determinata) in qualsiasi blocco presente nel disegno.
Certo, aggiornando il software alla versione ultima il problema si risolverebbe: ma in questo momento non ce lo possiamo permettere.
Il lisp di Terminator che mi ha consigliato arri fa qualcosa di simile ma non riesco ad adattarlo....
Ciao e grazie.
Giua
aforza Inserito il - 08 aprile 2014 : 08:38:14
Ciao,

curiosità ma che tipo di elaborazione dati fai?
ma i blk da aggiornare (nomi diversi) quanti sono? perché se sono 10 basta ridefinirli eliminando il campo diverso se sono 100 o 1000 (anche se io non lo farei ma non so che problemi ti da questo attributo in più)

Ciao

giua Inserito il - 08 aprile 2014 : 07:02:14
.... e allora non mi resta che ringraziare Terminator.
E sperare che passi di qui, si metta la mano sul cuore e modifichi il Lisp che ha fatto, perchè io non riesco.
Anche perchè ho scoperto che gli attributi da eliminare non sono invisibili come avevo postato, sono vuoti ma visibili ....
Buona giornata.
Giua
arri Inserito il - 07 aprile 2014 : 18:58:50
Messaggio inserito da giua

Proverò a modificare il programma inserendo il controllo per eliminare soltanto gli attributi invisibili con una determinata etichetta. Ma le mie ridottissime doti da programmatore si faranno sentire!!!
Sarà dura.

Grazieeeeee
Giua


ho solo indicato la discussione,
i ringraziamenti spettano a Terminator,
l'autore dei lisp
giua Inserito il - 07 aprile 2014 : 17:31:19
Proverò a modificare il programma inserendo il controllo per eliminare soltanto gli attributi invisibili con una determinata etichetta. Ma le mie ridottissime doti da programmatore si faranno sentire!!!
Sarà dura.

Grazieeeeee
Giua
arri Inserito il - 07 aprile 2014 : 14:06:51
http://www.cadlandia.com/topic.asp?TOPIC_ID=12317

non fa quello che chiedi,
ma potrebbe tornare utile
giua Inserito il - 07 aprile 2014 : 11:26:43
Grazie molte,
purtroppo il programma che mi hai indicato serve per modificare su più DWG un valore di un certo attributo in modo automatico (se ho capito bene), ma non c'è la possibilità di eliminare gli attributi.
Avete qualche altra idea?

Grazie davvero.
Giua

TuttoCAD Forum © 2001-2010 CADLandia Torna all'inizio della Pagina
Pagina generata in 0,1 secondi.