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
 sostituzione blocco

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
Roberto07 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
20   U L T I M E    R I S P O S T E    (in alto le più recenti)
Terminator Inserito il - 06 aprile 2011 : 13:57:47
Dato che mi sono accorto che c'erano delle piccole inesattezze nel listato, invio l'ultima versione del programma RBLOCK:

Scarica allegato:

RBLOCK.zip
2,5 KB

Inoltre una versione "light" del programma che funziona solamente sulla selezione singola dei blocchi:

Scarica allegato:

RBLOCK2.zip
2,14 KB


Roberto07 Inserito il - 06 aprile 2011 : 08:06:06
Messaggio inserito da Terminator

Prossimo passo sarà di far fare al programma la barba e il caffè...


Chiedo perdono
arri Inserito il - 06 aprile 2011 : 07:48:57
Messaggio inserito da Terminator

Mi sono ricordato che esiste una funzione per portare una variabile da un disegno all'altro nella stessa sessione di AutoCAD:
(vl-propagate)


ottima info,
grazie Terminator !
Terminator Inserito il - 06 aprile 2011 : 06:01:44
Mi sono ricordato che esiste una funzione per portare una variabile da un disegno all'altro nella stessa sessione di AutoCAD:
(vl-propagate)



Scarica allegato:

RBLOCK.zip
2,41 KB


Prossimo passo sarà di far fare al programma la barba e il caffè...

PS: De nada, arri!
Roberto07 Inserito il - 05 aprile 2011 : 11:47:47
Term grazie.....

Poi ti dirò.

Tutto O KAPPA!! E' un altro pianeta.... Grazie ancora!


Term quando cambio disegno perde la memorizzazione dell'ultima cartella usata e mi ritorna in quella base (nel mio caso \A-LAVORI). C'è da cambiare qualche passo o la cosa deve restare così?

Non mi ci mandare.... Sono un tuo fan!
Terminator Inserito il - 05 aprile 2011 : 11:43:15
Ultima versione con la scelta se effettuare la selezione singola o multipla.


Scarica allegato:

rblock.zip
2,42 KB

Aggiornamento:
Bug risolto. Il programma si inchiodava quando si selezionava un'entità che non fosse un blocco, nella selezione singola
Roberto07 Inserito il - 03 aprile 2011 : 22:28:10
Penso di aver capito.

Io però non ho perso nessuno...

Da te sto ancora aspettando una risposta sulle priem nozioni del 3D in Autocad....
Giuseppe Mauro Inserito il - 03 aprile 2011 : 22:24:00
Eh, che differenza c'e' tra la lana e la seta ve' Robe'?
Hai perso un amico lana, ed hai trovato un amico seta...

Terminator Inserito il - 03 aprile 2011 : 21:02:46
Dammi del tempo e faccio in modo di avere due opzioni di selezione dei blocchi in un solo comando.
Roberto07 Inserito il - 03 aprile 2011 : 20:09:45
OK!

Testato e funziona benissimo. Non ti fa vedere i blocchi correnti ma per questo posso usare BlockReplace.

Comunque il 1° rblocchi è utile per cambiare più blocchi...

OK diciamo che devo memorizzare le diverse modalità d'uso, ma mi rimane abbastanza semplice grazie ai famosi bottoncini....

Grazie, grazie, grazie.

Terminator Inserito il - 03 aprile 2011 : 17:00:32
Ecco qui una versione della sostituzione blocchi con il riquadro di dialogo che comprende sia la scelta della directory che la scelta del file. Il refresh nel riquadro di dialogo quando si cambia le directory non è farina del mio sacco: in origine era un'ottima funzione per la selezione file con estensioni varie e da me pesantemente modificata per la sostituzione dei blocchi. Resto in attesa di eventuali consigli e/o miglioramenti.

NB: Non c'è bisogno di DOSLib

Scarica allegato:

rblock.zip
2,02 KB
Terminator Inserito il - 03 aprile 2011 : 14:00:16
Grazie, GP! Ogni tanto fa bene una rinfrescata sulle funzioni VLisp che non mi ricordo e su altre che non so neppure cosa facciano!
GP Inserito il - 03 aprile 2011 : 13:08:40
@Terminator
Per memorizzare il percorso:


Con ExpressTools installati
(setq CARTELLA (acet-ui-pickdir  "Selezionare la cartella"))


Senza Express/DOSLib
(setq CARTELLA (vlax-get-property (vlax-get-property (vlax-invoke-method
			   (vla-getInterfaceObject (vlax-get-acad-object) "Shell.Application")
			   'BrowseForFolder (vla-get-HWND (vlax-get-acad-object))
			   "Selezionare la cartella" 0)'Self) 'Path))



Nota: i due codici evidenziano inizialmente cartelle diverse (quella personale o Computer).
Terminator Inserito il - 03 aprile 2011 : 07:57:48
Ecco qui l'ultima versione con le DOSLib:

Scarica allegato:

RBlocchi.zip
1,67 KB

PS: Le utility DOSLib sono molto semplici da installare, unzippi in una cartella qualsiasi e prendi l'arx a 32 o 64 bit caricandolo con _APPLOAD
Roberto07 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ì...

Terminator 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.
Roberto07 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 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 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 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).

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