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.
|