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
 AutoCAD
 Rinomina attributi blocchi

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
cantacad Inserito il - 16 aprile 2011 : 18:16:57
Salve a tutti!

Breve incipt: una parte purtroppo consistente del mio lavoro consiste (ripurtroppo) nel copiare (come una scimmia) dati tecnici in appositi blocchi all'interno dei miei file perchè gli esecutivi della mia ditta hanno ovviamente uno standard grafico differente da quello utilizzato dai vari studi di progettazione...
Capite facilmente che risparmiare un click per ogni operazione che si ripete millemila volte genererà una fuga dal lavoro anticipata che vorrei concretizzare grazie alla vostra saggezza!
Se sarà il caso, aprirò una discussione per ogni punto affrontato perchè mi rendo conto che chiedo consigli sugli argomenti più disparati...i consigli di cui avrei bisogno sono i seguenti:
1) conoscete un mouse multitasti buono? vorrei settare 2 tasti con i comandi copia e incolla...mi hanno consigliato il logitech MX518...
2) conoscete un lisp che metta in relazione gli attributi di due blocchi differenti? mi spiego meglio, il mio blocco è sempre lo stesso, il blocco da cui attingo è sempre lo stesso per il lavoro in questione, vorrei associare i 2 blocchi in modo che il testo degli attributi del blocco origine finisca nei corrispondenti attributi del mio blocco...mi sono spiegato sufficientemente bene? mah...
3) esiste la maniera per cui nella finestra proprietà si metta direttamente sull'attributo cliccato sul blocco come avviene per l'edito blocchi avanzato? dovendo fare correzioni multiple la finestra proprietà risulta comodissima, se avesse anche questa possibilità sarebbe una gran cosa...
20   U L T I M E    R I S P O S T E    (in alto le più recenti)
wolverine74 Inserito il - 19 novembre 2012 : 15:43:26
Ciao a tutti, ho cercato in giro per il forum un argomento simile, ma la mia scarsa (nulla) conoscenza di Autolisp non mi é molto di aiuto: vorrei realizzare un comando che 1)mi chiede di selezionare un blocco, mi chiede di selezionare un secondo blocco 3) copia il valore di determinati attributi contenuti nel primo blocco all'interno di determinati attributi del secondo. Credo di aver capito che si puo fare, ma non ci sono ancora arrivato...sapreste indicarmi se qualcosa del genere sia già stato fatto; quello che vedo in questa discussione mi confonde un po'...

Grazie a tutti
cantacad Inserito il - 27 aprile 2011 : 19:22:44
grazie grazie, ultimo aiutino...mi avete fatto vedere come agire sul lisp per associare i blocchi tabelle, potreste indicarmi come agire per associare gli attributi da una tabella all'altra?
La logica di come vanno associati glia ttributi l'ho spiegata associoandovi lo stesso numero ma come farò con un altro blocco?

(Tra l'altro vorrei essere chiaro, in fase di lavoro non ci sono i numerini che ho scritto io da spostare da una parte all'altra, ma svariate di singole tabelle con all'interno valorei alfanumerici)

Saluti!
Terminator Inserito il - 27 aprile 2011 : 16:51:30
Messaggio inserito da cantacad

Ciao, ho provato il lisp e funziona ma...


(and (equal (vla-get-ObjectName nome) "AcDbBlockReference")
	 (wcmatch (strcase (vla-get-Name nome)) "DB_SCH_TABELLA*")
	 (equal (vla-get-HasAttributes nome) :vlax-true)
	 (equal (vla-get-ObjectName nome2) "AcDbBlockReference")
	 (wcmatch (strcase (vla-get-Name nome2)) "DATI*")
	 (equal (vla-get-HasAttributes nome2) :vlax-true)
)


Non capisco, ma il listato aggiornato sarebbe questo. E prevede pure che tutti i blocchi che iniziano con DB_SCH_TABELLA e con DATI vengano presi in considerazione. Se così non va bene o rinomini i blocchi oppure metti tutto *, così:

(and (equal (vla-get-ObjectName nome) "AcDbBlockReference")
	 (wcmatch (strcase (vla-get-Name nome)) "*")
	 (equal (vla-get-HasAttributes nome) :vlax-true)
	 (equal (vla-get-ObjectName nome2) "AcDbBlockReference")
	 (wcmatch (strcase (vla-get-Name nome2)) "*")
	 (equal (vla-get-HasAttributes nome2) :vlax-true)
)


Terza possibilità, la solita dialog con tutte le tabelle a disposizione.
A questo punto hai abbastanza materiale per procedere da solo.

arri Inserito il - 27 aprile 2011 : 07:46:09
Messaggio inserito da cantacad
come hai già scritto studi diversi = tabelle diverse...come mi devo comportare per modificare il lisp a seconda delle tabelle che mi trovo?


modifichi i nomi dei blocchi

Messaggio inserito da Terminator

Questo è l'originale dal file rintab.lsp:

(and (= (cdr (assoc 0 (entget nome))) "INSERT")
     (= (strcase (cdr (assoc 2 (entget nome)))) "DB_SCH_TABELLA_SCHEMI_COMPILAZIONE_2")
     (= (cdr (assoc 0 (entget nome2))) "INSERT")
     (= (strcase (cdr (assoc 2 (entget nome2)))) "DATI TABELLA")
)

Giuseppe Mauro Inserito il - 27 aprile 2011 : 05:03:48
Piu che un piccolo manuale, c'e' la guida di Autolisp da imparare
cantacad Inserito il - 26 aprile 2011 : 19:47:11
Ciao, ho provato il lisp e funziona ma...funziona solo per le due tabelle che ti ho fatto vedere, ovviamente come hai già scritto studi diversi = tabelle diverse...come mi devo comportare per modificare il lisp a seconda delle tabelle che mi trovo? c'è un piccolo manuale da scaricare da qualche parte?

ciao!
Terminator Inserito il - 20 aprile 2011 : 19:46:59
Questa è la parte iniziale del listato:

(defun C:RINTAB	(/		nome	       nome2	      entnome1	     entnome2
		 entnome3	entnome4       entnome5	      entnome6	     entnome7
		 entnome8	entnome9       entnome10      entnome11	     entnome12
		 entnome13	entnome14      entnome15      entnome16	     entnome17
		 entnome18	entnome19      entnome20      entnome21	     entnome22
		 entnome23	entnome24      entnome25      entnome26	     entnome27
		 entnome28	entnome29      entnome30      entnome31	     entnome32
		 entnome33	entnometab1    entnometab2    entnometab3    entnometab4
		 entnometab5	entnometab6    entnometab7    entnometab8    entnometab9
		 entnometab10	entnometab11   entnometab12   entnometab13   entnometab14
		 entnometab15	entnometab16   entnometab17   entnometab18   entnometab19
		 entnometab20	entnometab21   entnometab22   entnometab23   entnometab24
		)
 (vl-load-com)         <-- Inserire la funzione qui 
 (setq nome  (vlax-ename->vla-object (car (entsel "\nSelezionare tabella originale: ")))
       nome2 (vlax-ename->vla-object (car (entsel "\nSelezionare tabella nuova: ")))
 )


Tranquillo, non c'è nessun file esterno da scaricare.
cantacad Inserito il - 20 aprile 2011 : 19:06:23
X Terminator: perdona ma non capisco dove devo scrivere e quando vl-load-com...mi dice sconosciuto(*)..., porta pazienza, me lo spieghi passo passo che me lo segno per altri eventuali comandi vba? intanto punto 1 ho trascinato il nuovo rintab dentro come per l'altro che era solamente lisp giusto?

(*) NOTA: HA A CHE FARE CON UN QUALCHE PACCHETTO CHE BISOGNA SCARICARE??? MI SA DI SI E CHE NE ABBIAMO GIA' PARLATO, MA SUL CATORCIO DI COMPUTER CHE HO ORA NON MI ARRISCHIO...

X Arri: ok rinominato...per l'altro commento ti dico che è mooolto difficile che qualcheduno ciccioli con battman il proprio blocco, però terrò a mente

X Giuseppe Mauro: I M P O S S I B I L E (fortunatamente aggiungo) a parte che io vengo all'ultimo posto della catena del processo perchè acquisisco uno schema da un progettista e non da un fornitore, cioè non lo commissiono ed il progettista non lo fa per me ma per chiunque sia incaricato dal suo committente di eseguire gli impianti...e comunque se esistesse questa regola, e dovessi sottomettermi io quando divento fornitore di qualcuno mi sparerei subito!
arri Inserito il - 20 aprile 2011 : 18:47:20
Messaggio inserito da Giuseppe Mauro

Mah, questa problematica sarebbe facilmente aggirabile consegnando ai fornitori il proprio blocco e dicendogli devi compilare questo, altrimenti non accetto il dwg...


c'è chi fa quello che vuole e i dwg vengono accettati ugualmente
Giuseppe Mauro Inserito il - 20 aprile 2011 : 14:41:24
Mah, questa problematica sarebbe facilmente aggirabile consegnando ai fornitori il proprio blocco e dicendogli devi compilare questo, altrimenti non accetto il dwg...
Terminator Inserito il - 20 aprile 2011 : 13:19:28
Per risparmiare click rischia di doverne fare mooooooooolti di più!
arri Inserito il - 20 aprile 2011 : 12:48:48
Messaggio inserito da Terminator
però la sequenza degli attributi deve essere la stessa altrimenti casca il palco.


cantacad deve stare attento che qualcuno non gli faccia uno scherzo, mischiando le posizioni con il comando BATTMAN
arri Inserito il - 20 aprile 2011 : 11:16:24
Messaggio inserito da Terminator
Anche se chiunque può cancellare il "copyright" e spacciarlo per suo, troppo facile...


possono ingannare il prossimo ma non loro stessi, dentro di loro sanno chi è il vero autore
arri Inserito il - 20 aprile 2011 : 07:56:54
Messaggio inserito da cantacad
tra l'altro forse è il caso di cambiare il titolo della discussione


ti posizioni sul primo messaggio e lo modifichi in
Rinomina attributi blocchi
Terminator Inserito il - 19 aprile 2011 : 18:26:31
Oops, mi dimentico sempre, aggiungi all'inizio del comando la riga:
(vl-load-com)

Per quanto riguarda la tabella puoi sempre rinominarla come il primo esempio che hai postato.
cantacad Inserito il - 19 aprile 2011 : 18:24:34
Ho provato l'ultima versione e purtroppo il risultato è stato

Comando:
RINTAB
Selezionare tabella originale: ; errore: no function definition:
VLAX-ENAME->VLA-OBJECT

Per rispondere al tuo ultimo commento invece direi che la cosa non va bene perchè appunto le tabelle "origine" cambiano a seconda del lavoro ed hanno nome diverso...ciao!
Terminator Inserito il - 19 aprile 2011 : 10:50:24
Se conosci bene la sequenza e il numero degli attributi direi più che fattibile. Ti consiglio di utilizzare l'ultima versione, è anche più semplice per inserire nuove modifiche. L'unico dubbio potrebbe essere il nome del blocco-tabella che, per quanto possa presumere, dato che ci sono più studi tecnici diversi, non è lo stesso ogni volta. Infatti il comando agisce solo con blocchi il cui nome inizia per DB_SCH_TABELLA*.
cantacad Inserito il - 19 aprile 2011 : 10:16:02
Ok grazie, oggi la proverò, magari e definitiva...sai una cosa pero? pensavo che se imparassi a modificare la prima versione che hai realizzato in modo tale da salvarla per ogni tipo di schema "input" potrei farmi una raccolta clienti...es: rintab_studio_pinco rin_tab_studio_pallino e così via...cosa ne dici?
tra l'altro forse è il caso di cambiare il titolo della discussione
Terminator Inserito il - 19 aprile 2011 : 09:21:25
Ho ridisegnato completamente il comando di rinomina tabelle, riducendo di brutto le righe di programmazione e usando le funzioni VisualLISP che faccio sempre un po' di fatica ad usare, malgrado siano molto più efficienti delle normali funzioni Lisp.



Scarica allegato:

Rintab.zip
1,78 KB
Terminator Inserito il - 18 aprile 2011 : 19:48:28
Ok, si può anche mettere in relazione una tabella originaria a caso con una di destinazione a caso, però la sequenza degli attributi deve essere la stessa altrimenti casca il palco. Al limite posso mettere in relazione le tabelle che in comune hanno i primi caratteri:

Questo è l'originale dal file rintab.lsp:

(and (= (cdr (assoc 0 (entget nome))) "INSERT")
     (= (strcase (cdr (assoc 2 (entget nome)))) "DB_SCH_TABELLA_SCHEMI_COMPILAZIONE_2")
     (= (cdr (assoc 0 (entget nome2))) "INSERT")
     (= (strcase (cdr (assoc 2 (entget nome2)))) "DATI TABELLA")
)

Una possibile modifica può essere questa:


(and (= (cdr (assoc 0 (entget nome))) "INSERT")
     (wcmatch(strcase (cdr (assoc 2 (entget nome)))) "DB_SCH_TABELLA*")     
     (= (cdr (assoc 0 (entget nome2))) "INSERT")
     (wcmatch(strcase (cdr (assoc 2 (entget nome2)))) "DATI*")
)

In questo modo solo i blocchi che iniziano con DB_SCH_TABELLA e con DATI saranno presi in considerazione.

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