• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Leggi altro.

Problema unione regioni

vet.giu

Utente poco attivo
Professione: Programmatore
Software: Access,VB,VBA
Regione: Abruzzo
#1
Ciao a tutti:)
sono alle prime armi con autocad e vb
ho un problema!:confused:
sto realizzando un modulo che seleziona tutte le polilinee le trasforma in regioni assegna un nr prog per regione e alla fine unisco le regioni per avere l'area complessiva.
Una volta create le regioni non riesco ad unirle in un unica regione.
Aiutooooo!!!Pleaseeee!!!
questo è il codice completo:
--------------------------------------------------
Dim TextHeight As Double
TextHeight = 1

Dim StartNo As Integer
StartNo = 1

'Rimuove le precedenti selezioni
For i = 0 To ThisDrawing.SelectionSets.count - 1
If ThisDrawing.SelectionSets.Item(i).Name = "PolySelection" Then
ThisDrawing.SelectionSets.Item(i).Delete
End If
Next

'Crea la selectionset
Dim PolySelection As AcadSelectionSet
Set PolySelection = ThisDrawing.SelectionSets.Add("PolySelection")

'Genera il filtro per AutoCAD
Dim gpCode(0) As Integer
Dim dataValue(0) As Variant
gpCode(0) = 0
dataValue(0) = "LWPOLYLINE"
Dim groupCode As Variant, dataCode As Variant
groupCode = gpCode
dataCode = dataValue

'Seleziona tutte le polilinea utilizzando il filtro
PolySelection.Select acSelectionSetAll, , , groupCode, dataCode

Dim ThisPolyline(0) As AcadEntity
Dim myRegion As Variant
Dim myCentroid As Variant

Dim InsertionPoint(0 To 2) As Double

'Setta le polilinee selezionate nel filtro
For i = 0 To PolySelection.count - 1

Set ThisPolyline(0) = PolySelection.Item(i)

' Crea la regione sulla polilinea
myRegion = ThisDrawing.ModelSpace.AddRegion(ThisPolyline)

' Trova il baricentro della regione
myCentroid = myRegion(0).Centroid

' Cancella la Regione
'myRegion(0).Delete


'Crea l'inserimento del testo nel baricentro della regione
InsertionPoint(0) = myCentroid(0)
InsertionPoint(1) = myCentroid(1)
InsertionPoint(2) = 0

'Crea il numero progressivo nella regione
ThisDrawing.ModelSpace.AddText CStr(i + 1), InsertionPoint, TextHeight
Next i

'Unisce le regioni

Dim unitReg As AcadRegion
Dim compReg As AcadRegion

Set compReg = myRegion(0)


For i = 1 To UBound(myRegion)
MsgBox "yes"
Set unitReg = myRegion(i)

compReg.Boolean acUnion, unitReg
compReg.Update

Next i
 

Shape

Utente Senior
Professione: Disegnatore Carpenteria
Software: Autocad, VBA-AutoLisp, Tecnometal4D, GIMP
Regione: Friuli
#2
non ho avuto tempo di leggere a fondo tutto ma 1 cosa ho notato, svuoti un oggetto e poi lo richiami

Inoltre invece del ciclo fori=1 to ... nella selezione degli oggetti del sste. utilizza il metodo for each element in sset lik passa 1 ad 1 ugualmente senza bisogno di calcolare la dimensione dell'array.



' Cancella la Regione
'myRegion(0).Delete



'Crea l'inserimento del testo nel baricentro della regione
InsertionPoint(0) = myCentroid(0)
InsertionPoint(1) = myCentroid(1)
InsertionPoint(2) = 0

'Crea il numero progressivo nella regione
ThisDrawing.ModelSpace.AddText CStr(i + 1), InsertionPoint, TextHeight
Next i

'Unisce le regioni

Dim unitReg As AcadRegion
Dim compReg As AcadRegion

Set compReg = myRegion(0)


For i = 1 To UBound(myRegion)
MsgBox "yes"
Set unitReg = myRegion(i)

compReg.Boolean acUnion, unitReg
compReg.Update

Next i

inoltre se
myRegion = ThisDrawing.ModelSpace.AddRegion(ThisPolyline)
non capisco dove definisci myregion(0) (1) etc.. si è un variant ma se lo riempi su myregion lo sovrascrivi ogni volta, dovresti utilizzare un contatore myRegion(i) = ThisDrawing.ModelSpace.AddRegion(ThisPolyline)

ripeto le sto buttando li, non ho il tempo di leggere a fondo vedere tutti gli intoppi. I miei sono solo degli spunti.
 
Ultima modifica:

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, GstarCAD, CadWorx, Excel, Lisp, VBA
Regione: Sicilia
#4
A occhio, il problema sta nella variabile myRegion, in quanto contiene solo l'ultima regione creata.
Creati una selezione di tutte le regioni appena create e poi le unisci.

Ciao
 

vet.giu

Utente poco attivo
Professione: Programmatore
Software: Access,VB,VBA
Regione: Abruzzo
#5
:D Ok corretto l'errore adesso funziona!!!!!

grazie tanto dell'aiuto:)