• このフォーラムは、www.cad3d.it/forum1 - イタリアのデザインコミュニティの機械翻訳です。いくつかの用語は正しく翻訳されていません。

ワンクリックですべてのブロックを選択

  • Thread starter Thread starter zintonio
  • Start date Start date

zintonio

Guest
salve,
ho un problema che sto cercando di risolvere ma non riesco più ad andare avanti forse perche le mie conoscenze del linguaggio lisp sono misere.

allora vorrei creare una funzione che mi consente di selezionare tutti blocchi presenti in un disegno cliccando su uno. ho provato a fare così:

(defun c:tutti (/n nome sel )
; seleziona tutti i blocchi messi che hanno il nome uguale al blocco selezionato.
(setq n (car(entsel "seleziona il blocco:")))
(setq nome (cdr(assoc 2 (entget n))))
(setq sel (ssget "_x" (list (cons 2 nome))))
)

sto avendo scarsi risultati, il mio obiettivo è quello di:
1. scrivere come comando: tutti;
2. selezionare il blocco;
3. tutti i blocchi presenti nel disegno vengono selezionati;

tutto questo nasce dal fatto che mi sono trovato davanti a disegni in cui ci sono blocchi su layer non idonei. ovviamente voi mi direte c'è la funz _qselect ma è troppo rognosa da usare xchè bisogna ricordarsi il nome del blocco. quello che vorrei realizzare è qualcosa di semplice (comando:tutti --> seleziono il blocco --> fine)

grazie
 
devi dirgli di catturare i blocchi, oltre al nome...

(setq sel (ssget "_x" (list (cons 0 "insert") (cons 2 nome))))


p.s. inserisci uno spazio prima della n
(defun c:tutti (/ n nome sel )
 
grazie mille gp,

non sapevo che dovevo catturare anche i blocchi.

ora funziona....nel senso che seleziona internamente, però non riesco a vedere la selezione per poter cambiare il layer o per effettuare altre operazioni. c'è un modo affinchè ottengo lo stesso risultato del _qselect?

grazie
 
salve.
forse non sono opportuno visto che è la sezione lisp però vorrei capire perché creare un lisp ad hoc e non utilizzare il comando selezione rapida dalla finestra proprietà (_.qselect da tastiera).
grazie.
 
salve.
forse non sono opportuno visto che è la sezione lisp però vorrei capire perché creare un lisp ad hoc e non utilizzare il comando selezione rapida dalla finestra proprietà (_.qselect da tastiera).
grazie.

il motivo zintonio l'ha spiegato:

....ovviamente voi mi direte c'è la funz _qselect ma è troppo rognosa da usare xchè bisogna ricordarsi il nome del blocco. quello che vorrei realizzare è qualcosa di semplice (comando:tutti --> seleziono il blocco --> fine)
 
io ho fatto un comando che serve per contare i blocchi di un disegno:

dopo averlo lanciato ci viene chiesto il nome del blocco (occorre quindi digitarlo) oppure premere invio per poter trovare il blocco richiesto cliccando sopra ad uno di essi.

il lisp poi restituisce il n. di blocchi trovati e chiede se vogliamo evidenziare questi blocchi cliccando in una zona vuota del disegno. questo permette di far partire una serie di linee che uniscono quel punto al punto di inserimento dei blocchi che sono stati trovati. .... un bell'aiuto per i disegni complessi!
se invece del punto diamo invio usciamo dal comando.

bene ... la cosa importante è che i blocchi trovati sono stati messi in un set di selezione: questo significa che se li vogliamo spostare o cancellare tutti insieme, occorre solo selezionarli con "p" (precedente).

es.
comando: cancella <invio>
selezionare oggetti: p <invio> .....
 

Attachments

io ho fatto un comando che serve per contare i blocchi di un disegno:

dopo averlo lanciato ci viene chiesto il nome del blocco (occorre quindi digitarlo) oppure premere invio per poter trovare il blocco richiesto cliccando sopra ad uno di essi.

il lisp poi restituisce il n. di blocchi trovati e chiede se vogliamo evidenziare questi blocchi cliccando in una zona vuota del disegno. questo permette di far partire una serie di linee che uniscono quel punto al punto di inserimento dei blocchi che sono stati trovati. .... un bell'aiuto per i disegni complessi!
se invece del punto diamo invio usciamo dal comando.

bene ... la cosa importante è che i blocchi trovati sono stati messi in un set di selezione: questo significa che se li vogliamo spostare o cancellare tutti insieme, occorre solo selezionarli con "p" (precedente).

es.
comando: cancella <invio>
selezionare oggetti: p <invio> .....

nella versione 2010 non funge.
 
impossibile: lo stò facendo funzionare ora su autocad 2010!

hai fatto tutto correttamente?
ovviamente prima bisogna caricare e lanciare conblok, selezionare i blocchi da trovare, uscire con invio o cliccando in un punto vuoto
ed infine dare il comando cancella o copia ecc e selezionare i blocchi precedenti con "p" ....
 
impossibile: lo stò facendo funzionare ora su autocad 2010!

hai fatto tutto correttamente?
ovviamente prima bisogna caricare e lanciare conblok, selezionare i blocchi da trovare, uscire con invio o cliccando in un punto vuoto
ed infine dare il comando cancella o copia ecc e selezionare i blocchi precedenti con "p" ....

pardon... :redface: insistevo a digitare conblock al posto di conblok ... lo avevo letto e riletto con una c in più. :redface:
 

Forum statistics

Threads
46,674
Messages
380,976
Members
2
Latest member
loop80
このフォーラムは、www.cad3d.it/forum1 - イタリアのデザインコミュニティの機械翻訳です。いくつかの用語は正しく翻訳されていません。

Members online

No members online now.
Back
Top