[ Home | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Download | Cerca | FAQ ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 Autocad
 VBA - Visual Basic per Autocad
 Riferimenti Incrociati

Nota: Devi essere registrato per poter inserire un messaggio.

Larghezza finestra:
Nome Utente:
Password:
Icona Messaggio:              
             
Messaggio:

  * Il codice HTML è ON
* Il Codice Forum è OFF


   Allega file
  Clicca qui per sottoscrivere questa Discussione.
 
    

V I S U A L I Z Z A    D I S C U S S I O N E
asetech Inserito il - 23/09/2009 : 16:06:36
Salve
Il mio problema e quello di capire quali sono i comandi in vba per creare una macro che mi trovi un determinato blocco (Freccia) all'interno di un layer che corrisponde al nome di ricerca che gli inserisco io tramite un messagBox e che mi restituisca i parametri che contiene all'interno e che questi testi e i valori me li scriva in un determinato posto (Le coordinate di dove scrivere il risultato sono contenute all'interno del blocco.
Es. Blocco
Parametri contenuti all'interno
- Nome
- Pagina
- Riga

Grazie
11   U L T I M E    R I S P O S T E    (in alto le più recenti)
admin Inserito il - 27/10/2009 : 18:50:53
Ciao,
sei riuscito a fare più niente da solo?
admin Inserito il - 15/10/2009 : 17:10:52
Ciao,
volevo solo avvisarti che per una fino al 25 sono in ferie e quindi non potrò aiutarti.
asetech Inserito il - 13/10/2009 : 12:56:10
Annulla Tutto
In parte ci sono riuscito avevo capito male i tuoi esempi.
Il codice che ho fatto e che funziona è il seguente:
Sub Trova()
Dim Tabelle, Blocchi As AcadSelectionSet
Dim FilterType(1) As Integer
Dim FilterData(1) As Variant
Dim idx, Contatore As Integer

' Seleziono tutte le Tabelle create del Progetto
Set Tabelle = ThisDrawing.SelectionSets

' Le cancello
If ThisDrawing.SelectionSets.Count <> 0 Then
Contatore = ThisDrawing.SelectionSets.Count

For idx = 0 To Contatore - 1
ThisDrawing.SelectionSets.Item(0).Delete
Next idx
End If


' Creo una nuova tabella, e ci infilo dentro tutti i blocchi di nome "Blocco_Test"

Set Tabella = ThisDrawing.SelectionSets.Add("B1")

FilterType(0) = 0
FilterData(0) = "INSERT"
FilterType(1) = 2
FilterData(1) = "Blocco_Test"
Tabella.Select acSelectionSetAll, , , FilterType, FilterData

End Sub
Ti dico in parte perche non riesco a trovare il valore dell'attributo di ogni blocco, mi puoi aiutare
Grazie
asetech Inserito il - 13/10/2009 : 11:19:50
Ciao di nuovo
Scusa volevo dire che io utilizzo lo stesso blocco che si chiama "freccia" enne volte nel progetto.
Ciao e grazie di nuovo
asetech Inserito il - 13/10/2009 : 11:18:22
Ciao
Grazie delle tue risposte
Ho provato a creare un nuovo progetto con tre layer
su ogni layer o inserito un blocco con 1 attributo e su ogni foglio ad ogni blocco ho inserito tre valori diveri Es. layer 1 Blocco pippo valre 1 - layer 2 Blocco Pippo valore 2 - layer 3 blocco pippo valore 3
Io ho provato a inserire il seguente codice
Sub prova()
Dim Blocchi As AcadSelectionSets
Dim i As Integer

Set Blocchi = ThisDrawing.SelectionSets

End Sub
Ma non riesco a capire lui trova i blocchi ma solo 1 e non 3 e poi il valore dell attributo non lo trovo da nessuna parte della struttura Blocchi
Io non uso un blocco diverso per ogni pagina ma un blocco solo con valori diverso in piu pagine.
L'esempio che mi hai passato con il comando .add lui crea una tabella dove nella struttura ci sono le stesse informazioniche posso trovare in "application"
Scusa se sono un po duro di comprendonio
Andrea
admin Inserito il - 09/10/2009 : 19:14:38
Ma siccome tu devi trovare un solo blocco con questo filtro dovrebbe selezionarti solo quelli, quindi alla fine si fare un for o un while dove all'interno andrai a trovarti le proprietà o quello che vuoi dei blocchi (nel tuo caso i valori di alcuni attributi se non erro).
SS8 (è un nome a caso) è un gruppo di selezione dove sarà raccolto tutti i blocchi trovati col filtro.
Una volta trovati i valori si può fare quello che si vuole:
creare una tabella
esportarli
scriverli direttamente
.....
Ciao.
asetech Inserito il - 09/10/2009 : 15:49:41
Ciao
Grazie degli esempi ma se ho capito bene questi servono per trovare dei blocchi o per filtrarli
Domanda che cosa e "SS8"
admin Inserito il - 30/09/2009 : 14:13:57
Riciao,
questo è un piccolo esempio di ricerca di un blocco di nome NEWCART.
con 0 e "INSERT" definisci un filtro di ricerca di soli blocchi
con 2 e "NEWCART" aggiungo al filtro di ricerca il nome del blocco
"SelectOnScreen" vai a selezionare gli oggetti visivi.
credo però che se ti serve filtrare quel X blocco su tutto il disegno e quindi anche dei layer congelati, credo che questo metodo non funzioni. Devo verificare anch'io perchè è una cosa che servirebbe pure a me.

Dim sstext As AcadSelectionSet
Dim FilterType(1) As Integer
Dim FilterData(1) As Variant
Set sstext = ThisDrawing.SelectionSets.Add("SS8")

FilterType(0) = 0
FilterData(0) = "INSERT"
FilterType(1) = 2
FilterData(1) = "NEWCART"

sstext.SelectOnScreen FilterType, FilterData

Poi dal gruppo di selezione "sstext" si comincia a fare le proprie verifiche come ricavare i dati che ti interessano.
Ciao!
admin Inserito il - 29/09/2009 : 13:56:11
Intanto ti copio un'email che mi ha mandato qualcuno per fare il filtro di ricerca per il singolo blocco e anche del layer.
Dall'esempio quì sotto togli quello che non ti interessa e aggiungi quello relativo al nome del blocco (il codice per i blocchi è il 2 come in autolisp).
Premetto che questo esempio non l'ho mai provato. Intanto ti mando questo, poi magari da questo prendiamo spunto se ti serve.

'Definiamo il set di selezione, dicendo che scegliamo tutti gli oggetti che rispettano le seguenti condizioni:
'1) sono sul layer MioLayer
'2) sono del colore DaLayer
'3) contengono all'interno la stringa definita in Criterio
' da notare l'uso dei caratteri jolly, che dicono che la stringa contenuta in criterio può essere preceduta
' da qualsiasi stringa (*) e susseguita da qualsiasi stringa (*)
'4) sono o oggetti TEXT o MTEXT
' da notare l'uso della notazione polacca inversa per la creazione delle sequenze di filtri.
FilterType(0) = -4
FilterData(0) = "FilterType(1) = 8
FilterData(1) = "MIOLAYER"
FIlterType(2) = 62
FilterData(2) = 256 'colore DaLayer
' Ora inseriamo il criterio di ricerca
FilterType(3) = 1
FilterData(3) = "*" & Criterio & "*"
FilterType(4) = -4
FilterData(4) = "FilterType(5) = 0
FilterData(5) = "TEXT"
FilterType(6) = 0
FilterData(6) = "MTEXT"
FIlterType(7) = -4
FilterData(7) = "OR>"
FilterType(8) = -4
FilterType(8) = "AND>"

' Qui andiamo a selezionare tutti gli oggetti del disegno (acSelectionSelAll) che rispettano le condizioni
SetDiSelezione.Select acSelectionSetAll, , , FilterType, FilterData

For Each Testo In SetDiSelezione
' Esegui le istruzioni sui testi che corrispondono ai criteri.
Next
asetech Inserito il - 24/09/2009 : 12:47:46
Si lo conosco non sono una cima.
Il mio problema è quello di conoscere le funzioni relativi ad autocad quelle di vba le conosco.
Mi aiuterebbe molto anche degli esempi.
Grazie
admin Inserito il - 23/09/2009 : 20:14:51
Ciao,
ma conosci VBA o non l'hai mai usato, tanto per capire da che punto aiutarti.

© Torna all'inizio della Pagina
Tradotto Da: Vincenzo Daniele & Luciano Boccellino- www.targatona.it | Distribuito Da: Massimo Farieri - www.superdeejay.net | Powered By: - Snitz Forums 2000 Version 3.4.03

Antidoto.org | Brutto.it | Estela.org | Equiweb.it