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

別のブロックに含まれるブロックを爆発させる

  • Thread starter Thread starter rdilecce80
  • Start date Start date

rdilecce80

Guest
ciao ragazzi,
buone feste a tutti.
ho un problema mai capitatomi in autocad.
creo dime per taglio pelle.
ogni dima in autocad è un blocco a se stante.
questa volta però mi è arrivato un file che contiene si tutte le dime ma, all'interno delle dime ci sono le famose tacche che però sono dei "blocchi nei blocchi" ovvero, la tacca non è una linea ma un blocco.
dato che sono 280 dime e le devo salvare in dxf per poi importarle nel programma specifico, mi servirebbe esplodere solo il blocco tacche.
risultato finale per ogni dima, sarà un'insieme di linee, txt e polilinee raggruppate in un blocco.

facendolo a mano la procedura è:
1 - apri blocco "dima1" in editor blocchi
2 - esplodi blocco "tacca"
3 - chiudi e salva.

grazie a chiunque potrebbe delucidarmi su questo quesito
 
seleziona tutti i blocchi tacche mediante il comandi _filter
lanci _filter, scegli dal menu a tendina "block name" (o nome blocco) e scrivi nella casellina il tuo tacche, poi fai aggiungi.
fatto questo quando dai ok acad ti permette di selezionare tutto il dwg e lui scarta i blocchi di nome tacche, lasciandoti come selezione tutti i blocchi tacche.
dai un explode ed alla selezione oggetti rispondi con un p (precedente) et voilà il gioco è fatto.
 
grazie per la risposta.
non funge :(

allora:
1. ci sono 280 blocchi ognuno con nome proprio (es: block1; block2; block3...)
2. ogni blocco è formato da una polilinea, un txt e un altro blocco chiamato notchs2 (che è la famosa tacca)
3. io vado in filtra - nome blocco - aggiungo il blocco notchs2 - applica - mi dice: seleziona oggetti.
4. cerco di selezionare tutti i blocchi ma mi dice: 0 trovati
 
il tuo comando è valido se tutti e 280 blocchi sono esplosi ma per filtrare solo il blocco nel blocco, non va
 
in attesa di in lisp suggerisco un escamotage, che potrebbe non essere rapido però:
entri nel blocco che vuoi esplodere
inserisci una figura che lo evidenzi dal resto del disegno come un cerchio di un colore non presente o su un layer dedicato
esci dal blocco salvandolo
adesso hai visibili tutti i blocchi contenenti il blocco da esplodere
selezioni un cerchio ed entri in modifica del blocco di primo livello dove esplodi il contenuto e cancelli il cerchio. per velocizzare la procedura associa al doppioclick sul blocco la sua modifica.
 
in attesa di in lisp suggerisco un escamotage, che potrebbe non essere rapido però:
entri nel blocco che vuoi esplodere
inserisci una figura che lo evidenzi dal resto del disegno come un cerchio di un colore non presente o su un layer dedicato
esci dal blocco salvandolo
adesso hai visibili tutti i blocchi contenenti il blocco da esplodere
selezioni un cerchio ed entri in modifica del blocco di primo livello dove esplodi il contenuto e cancelli il cerchio. per velocizzare la procedura associa al doppioclick sul blocco la sua modifica.

hmm già provato a mettere tutte le tacche su un layer entrando nel blocco notchs2. se spengo tutti i livelli tranne quello, in effetti mi fa vedere solo le tacche ma non posso esploderle altrimenti mi esplode ogni singolo blocco :frown:
 
già provato a mettere tutte le tacche su un layer entrando nel blocco notchs2
non è quello che ho scritto io.
comunque anche quello è un sistema valido; individuando il blocco notchs2 si entra in modifica del blocco che lo contiene e si può esplodere notchs2.
usando il comando modifrif si lavora senza entrare nella modalità di gestione dei blocchi permettendo una maggior rapidità di esecuzione.
come si vede nell'immagine con il comando modifrif si apre una finestra che mostra i blocchi modificabili a più livelli e si può decidere su quale agire; nel caso interessato si selezionerà quello superiore a notchs2 potendo così esplodere il blocco al suo interno. si esce col comando chiudirif che salva il blocco
Immagine.jpg
 
grazie mille per le celeri risposte.
ora comincio così aspettando qualche anima buona che crei un lisp per accelerare notevolmente il lavoro.

ho disattivato tutti i layer tranne il "4" in modo che non debba fare sempre lo zoom su ogni pezzo :rolleyes:

buon capodanno! :finger:
 
prova questo programma che esplode solo le tacche, senza esplodere le dime. la selezione richiesta è solo per i blocchi. i blocchi che non contengono le tacche notchs2 non vengono trattati.

Code:
(defun c:esptac (/ blocks gru dima index listadima count)
 (setq blocks(vla-get-blocks (vla-get-activedocument(vlax-get-acad-object)))
       gru(ssget '((0 . "insert")))
 )
 (repeat (setq index(sslength gru))
  (setq dima(ssname gru (setq index(1- index)))
        listadima(vla-item blocks (cdr(assoc 2 (entget dima))))
        count 0
  )
  (vlax-for elem listadima
   (if (and (equal (vla-get-objectname (vla-item listadima count)) "acdbblockreference")
	    (equal (vla-get-name (vla-item listadima count)) "notchs2")
       )
    (vla-explode (vla-item listadima count))
   )
   (setq count(1+ count))
  )
 )
)
 
confutatis, grazie mille per la risposta.

e' un lips o lo devo inserire in vba?

se vba come posso inserirlo? non sono per nulla ferrato in programmazione. scusatemi.
 
ho provato a creare un lisp chiamato esptac.

l'ho caricato ma mi esce il seguente errore:

comando: _appload esptac.lsp caricato.
comando:
comando:
comando: esptac
; errore: no function definition: vlax-get-acad-object

uso autocad 14 64bit su win7
 
Last edited:
dopo una ricerca su google, sono arrivato a conclusione che bisognava aggiungere la riga (vl-load-com) e funziona.

codice completo:

(defun c:esptac (/ blocks gru dima index listadima count)
(vl-load-com)
(setq blocks(vla-get-blocks (vla-get-activedocument(vlax-get-acad-object)))
gru(ssget '((0 . "insert")))
)
(repeat (setq index(sslength gru))
(setq dima(ssname gru (setq index(1- index)))
listadima(vla-item blocks (cdr(assoc 2 (entget dima))))
count 0
)
(vlax-for elem listadima
(if (and (equal (vla-get-objectname (vla-item listadima count)) "acdbblockreference")
(equal (vla-get-name (vla-item listadima count)) "notchs2")
)
(vla-explode (vla-item listadima count))
)
(setq count(1+ count))
)
)
)

problema risolto

grazie mille a tutti per la pazienza e il supporto
 
vedo che hai cancellato la richiesta di inserire la tacca esplosa sul layer "4". questa versione risolve il problema
 

Attachments

si, avevo cancellato la richiesta di inserire la tacca esplosa sul layer "4" perchè sono andato nel blocco notchs2, l'ho inserito manualmente su layer 4 e tutto funge.
successivamente ho provato quest'ultimo lsp che mi hai inviato tu ma non li mette automanticamente su layer 4. cmq poco importa.
per me l'importante era esplodere le tacche tutte assieme e non un blocco alla volta.

grazie mille per tutto :finger:
 
al limite, se vuoi cambiare il layer, basta che modifichi la riga (vla-put-layer listaent "4"), dove "4" è il nome del layer
 

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