Autore |
Discussione  |
Roberto07
Utente Master
 Regione: Lazio
Prov.: Roma
Città: Sabina Italia
1042 Messaggi |
Inserito il - 30 marzo 2011 : 22:22:53
|
Ciao a tutti Tempo fa vi avevo parlato di un "filetto" che mi permette di cambiare un blocco con un altro mantenendo la scala e la rotazione.
Me ne servo tantissimo ma, siccome piano piano ho allungato sempre di più il nome dei files/blocchi, comincio a soffrire un po' per ricordarmi del nome.
Trovato il lisp "Rename Blocco" di GP molto comodo, vi chiedo se è possibile inserire la comodità di estrarre il nome del blocco da sostituire anche qui dando la possibilità di modificarlo per cambiare il blocco.
Questo è il "mio" lisp attuale:
(defun C:BLOCKOP() (setq vecchioecho (getvar "CMDECHO")) (setvar "CMDECHO" 0) (prompt "Seleziona i blocchi da cambiare:") (setq gruppo (ssget) numero (sslength gruppo) contatore (1- numero)) (if (= vecchionome nil) (progn (setq nome (getstring "\nNuovo nome per i blocchi:") vecchionome nome) ) (progn (prompt "\nNuovo nome per i blocchi <") (prompt vecchionome) (setq nome (getstring ">:") vecchionome nome) ) ) (repeat numero (setq nome_blocco (ssname gruppo contatore) blocco (entget nome_blocco) punto (cdr (assoc 10 blocco)) scala_x (cdr (assoc 41 blocco)) scala_y (cdr (assoc 42 blocco)) scala_z (cdr (assoc 43 blocco)) ang_rot_rad (cdr (assoc 50 blocco)) ang_rot (* (/ ang_rot_rad pi) 180)) (command "_erase" nome_blocco "") (command "_insert" nome punto "xyz" scala_x scala_y scala_z ang_rot) (setq contatore (1- contatore)) ) (setvar "CMDECHO" vecchioecho) (terpri) )
e questa è una immagine eloquente.....
Immagine inserita:
 53,31 KB
In pratica io faccio "prospetto a- " che è quello esistente e "prospetto a " che è quello di progetto (nel nome manca il meno)
Quando il nome del file è lungo sarebbe troppo comodo se il comando estraesse il nome del file con il meno (per esempio) e nella sostituzione ti permetta di toglierlo. Grazzziiiieeeeee  
|
Modificato da - Roberto07 in Data 30 marzo 2011 22:24:23
|
|
Roberto07
Utente Master

Regione: Lazio
Prov.: Roma
Città: Sabina Italia
1042 Messaggi |
Inserito il - 31 marzo 2011 : 15:57:32
|
Azz...!! Pensavo di aver chiesto una cosetta da niente per i nostri maestri...
Nessuno mi aiuta per integrare il mio sostiuisci blocco con una pre-visualizzazione del nome del blocco cliccato da sostituire?
Mi sarebbe proprio utile.... Ma solo a me? A nessun altro può servire di sostituire una pianta ruotata e con una data scala, con un'altra pianta (diverso blocco)?
 |
 |
|
Roberto07
Utente Master

Regione: Lazio
Prov.: Roma
Città: Sabina Italia
1042 Messaggi |
Inserito il - 02 aprile 2011 : 06:38:42
|
Ho trovato questo BlockReplace.vlx che funziona abbastanza bene ma non ti fa cercare il blocco fuori dal disegno.
La funzione degli express tools invece mi fa un po' di casino.....
Per ora mi accontento.   |
 |
|
Terminator
Utente Master
725 Messaggi |
Inserito il - 02 aprile 2011 : 06:59:52
|
Per farlo cercare fuori dal disegno potrebbe bastare inserirlo nei percorsi di AutoCAD, o sbaglio?
Mi sono perso qualcosa? |
 |
|
Roberto07
Utente Master

Regione: Lazio
Prov.: Roma
Città: Sabina Italia
1042 Messaggi |
Inserito il - 02 aprile 2011 : 08:50:05
|
Non mi sembra che sia un problema di percorso...
Immagine inserita:
 39,15 KB
Poi, stranamente, ti costringe a cliccare 2 volte il blocco da sostituire.
Però per i nomi complessi che si fa fatica a ricordare è comunque un buon aiuto. Il problema è che prima devi inserire nel disegno tutti quelli che possono servire.  |
 |
|
Terminator
Utente Master
725 Messaggi |
Inserito il - 02 aprile 2011 : 08:54:38
|
Mi sembra così strano che un programma, a mio giudizio, non da poco, non abbia la possibilità di comprendere anche i blocchi che si trovano nei percorsi specificati da AutoCAD. Se fosse stato di estensione lsp si poteva tentare di cambiarlo, ma così bisognerebbe fare tutto ex-novo, mantenendo magari la stessa finestra di dialogo. |
 |
|
Roberto07
Utente Master

Regione: Lazio
Prov.: Roma
Città: Sabina Italia
1042 Messaggi |
Inserito il - 02 aprile 2011 : 09:09:52
|
Che lavoro e corrispondente spesa potrebbe comportare? Io non ho idea, di programmazione, ma solo di quella , non ci capisco niente.
 |
 |
|
Terminator
Utente Master
725 Messaggi |
Inserito il - 02 aprile 2011 : 10:09:38
|
Un tentativo potrebbe essere questo:
(defun C:RBLOCCHI ()
(vl-load-com)
(setvar "CMDECHO" 0)
(setq dcl_id (load_dialog "rblocchi.dcl"))
(if (not (new_dialog "rblocchi" dcl_id))
(exit)
)
(setq direct
"c:\\Documents and Settings\\Utente\\Documenti\\Lavori AutoCAD\\Blocchi\\"
)
(setq listablocchi
(vl-directory-files
direct
"*.dwg"
1
)
)
(start_list "rblocchi")
(mapcar 'add_list listablocchi)
(end_list)
(if nblocchi
(set_tile "rblocchi" nblocchi)
(progn
(set_tile "rblocchi" "0")
(setq nblocchi "0")
)
)
(setq nblocchi2 nblocchi)
(mode_tile "rblocchi" 2)
(action_tile
"rblocchi"
"(setq nblocchi(get_tile \"rblocchi\"))"
)
(action_tile "accept" "(done_dialog 1)")
(if (= (start_dialog) 1)
(progn
(setq nuovoblocco (nth (atoi nblocchi) listablocchi))
(command "_INSERT" (strcat direct nuovoblocco) pause 1 1 0)
)
(progn
(set_tile "rblocchi" nblocchi2)
(setq nblocchi nblocchi2)
)
)
(unload_dialog dcl_id)
(princ)
)
(princ
"\nBLOCCHI ...E DINTORNI (provvisorio) - by Terminator"
)
(princ "\nDigitare rblocchi per lanciare il lisp")
(princ)
E relativa finestra di dialogo:
rblocchi : dialog {
label = "RBLOCCHI";
: boxed_column {
label = "Scegli il tuo blocco";
: list_box {
key = "rblocchi";
width = 40;
value = "0";
//multiple_select = true;
allow_accept = true;
}
}
ok_cancel;
}
Intendiamoci, questo programma è solo di "controllo" per vedere se ho capito bene il tutto e quello di cui hai bisogno.
NB: ovviamente la riga in rosso la cambi come desideri ed è un percorso che non necessariamente è compreso nei percorsi di AutoCAD |
Modificato da - Terminator in data 02 aprile 2011 10:14:19 |
 |
|
Roberto07
Utente Master

Regione: Lazio
Prov.: Roma
Città: Sabina Italia
1042 Messaggi |
Inserito il - 02 aprile 2011 : 11:21:19
|
Comando: _appload replace-blocchi-terminator.lsp caricato.
Comando: BLOCCHI ...E DINTORNI (provvisorio) - by Terminator Digitare rblocchi per lanciare il lisp Comando: Comando: *Annullato*
Comando: rblocchi ; errore: esci / continua
io ho fatto questo cambiamento:
(setq direct "c:\\A-Lavori\\blocchi\\" )
|
 |
|
Terminator
Utente Master
725 Messaggi |
Inserito il - 02 aprile 2011 : 11:30:49
|
Ddevi inserire il file dcl nello stesso percorso del file lsp.
Scarica allegato:
RBlocchi.zip 726 Bytes |
Modificato da - Terminator in data 02 aprile 2011 11:36:48 |
 |
|
Roberto07
Utente Master

Regione: Lazio
Prov.: Roma
Città: Sabina Italia
1042 Messaggi |
Inserito il - 02 aprile 2011 : 12:03:01
|
Fatto. Ma mi fa solo inserire un blocco dalla dir \blocchi....
 |
 |
|
Terminator
Utente Master
725 Messaggi |
Inserito il - 02 aprile 2011 : 12:08:49
|
Però lo scopo del nome del blocco non ricordato e l'inserimento da un percorso non memorizzato da AutoCAD funziona!
|
 |
|
Roberto07
Utente Master

Regione: Lazio
Prov.: Roma
Città: Sabina Italia
1042 Messaggi |
Inserito il - 02 aprile 2011 : 12:11:28
|
Allora. Il box di dialogo mi fa apparire tutti i dwg di quella cartella. Scelto uno me lo inserisce nel disegno. Stop.
Sto facendo qualche casino? |
 |
|
Terminator
Utente Master
725 Messaggi |
Inserito il - 02 aprile 2011 : 18:48:24
|
Ecco qua:
Scarica allegato:
RBlocchi.zip 1,5 KB |
Modificato da - Terminator in data 02 aprile 2011 18:49:59 |
 |
|
Roberto07
Utente Master

Regione: Lazio
Prov.: Roma
Città: Sabina Italia
1042 Messaggi |
Inserito il - 02 aprile 2011 : 21:53:47
|
OTTIMO TERM!!
Ho modificato la cartella (mi appariva il box senza files) e ora funziona benissimo.
Non ti dice il nome del blocco che devi cambiare, ma il fatto che ti apre una finestra esterna e ti fa scegliere quello che va a sostituire il cliccato è cosa buona e giusta...
Me lo piazzo subito su un bottoncino....
Sono in forte debito con te....    |
 |
|
Terminator
Utente Master
725 Messaggi |
Inserito il - 02 aprile 2011 : 22:11:48
|
Non ti dice il nome del blocco che devi cambiare perché semplicemente io posso selezionare blocchi di nome diverso e cambiarli contemporaneamente. A pensarci bene forse non servirebbe selezionare più di un blocco con nome diverso e quindi non la selezione con (ssget) ma con (entsel). |
 |
|
Roberto07
Utente Master

Regione: Lazio
Prov.: Roma
Città: Sabina Italia
1042 Messaggi |
Inserito il - 02 aprile 2011 : 22:33:49
|
E' vero. Se ne cambi uno solo, come faccio al 90%, può essere utile vedere il nome del blocco che hai cliccato, contrariamente non serve molto, a meno che non appaia un elenco di quelli che hai selezionato, ma sinceramente non lo vedo così indispensabile...
Messo il bottoncino riporto un'immagine della situation:
Immagine inserita:
 30,25 KB
Ggggrrrrraaaazzzziiiieeeeee    |
 |
|
Terminator
Utente Master
725 Messaggi |
Inserito il - 02 aprile 2011 : 22:40:32
|
Selezione singola con la scritta in alto del vecchio blocco. Devi sovrascrivere la dcl sopra la precedente.
Scarica allegato:
RBLOCCHI2.zip 1,5 KB |
 |
|
Roberto07
Utente Master

Regione: Lazio
Prov.: Roma
Città: Sabina Italia
1042 Messaggi |
Inserito il - 02 aprile 2011 : 23:09:12
|
OTTIMISSIMO!!! Questo è a prova di vecchietti. Però è buono anche l'altro se si devono cambiare più blocchi. Quindi mi tengo anche il primo....
Piccolo quesito: visto che le mani sul box le sai mettere benissimo...volendo aggiungere uno "sfoglia" per andare anche su altre cartelle è molto complicato?
Con uno sfoglia il programma sarebbe da vendere e io comprerei le tue azioni...
Grazie! Grazie veramente...
 |
 |
|
Terminator
Utente Master
725 Messaggi |
Inserito il - 02 aprile 2011 : 23:17:46
|
Volendo si può fare un unico comando avente un riquadro di dialogo con 2 opzioni.
Per quanto riguarda lo sfoglia, si può fare, ma ovviamente la cosa si complica. Di solito, per la manipolazione dei percorsi, io uso le DOSLib aggiuntive
http://www.en.na.mcneel.com/doslib.htm
Chiaramente, se io elaboro il lisp con queste utility, queste le devi avere installate necessariamente anche tu, altrimenti ti arriva un bel messaggio di errore. |
Modificato da - Terminator in data 03 aprile 2011 05:40:29 |
 |
|
Roberto07
Utente Master

Regione: Lazio
Prov.: Roma
Città: Sabina Italia
1042 Messaggi |
Inserito il - 03 aprile 2011 : 07:03:26
|
| Messaggio inserito da Terminator
Volendo si può fare un unico comando avente un riquadro di dialogo con 2 opzioni. ... se io elaboro il lisp con queste utility, queste le devi avere installate necessariamente anche tu...
|
Ho scaricato doslib84.exe - come avrò il tuo OK le installerò...
Per il riquadro con le 2 opzioni dovrebbe andare più che bene. Non credo si perda l'immediatezza, in caso contrario si possono mantenere i due comandi separati (scegliendo "a monte"), ma certo avere la possibilità di cambiare cartella, compreso il data-base dei blocchi presenti nel disegno di lavoro, sarebbe ultra comodo.
Io sono ignorante come una capra, quindi solo tu puoi fare "il miracolo"... Comunque già è tantissimo quello che hai fatto!! 
Oggi poi dovrò andare ad una classica fiera di paese (la famiglia chiede....), che fanno la prima domenica del mese in un posto storico, se così si può dire, il "punto di ristoro" che fece Mussolini per i romani che andavano a sciare sul Terminillo, la montagna di Roma, come la definì...
   |
 |
|
Discussione  |
|