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

Macro per cambiare colore alle facce di un solido

resquas

Utente Junior
Professione: disegnatore
Software: INVENTOR 2008
Regione: Lombardia
#1
Ciao a tutti,
io ho un problema di questo tipo.Spesso i modelli 3d che i miei fornitori mi passano in formato step hanno le superfici colorate e non mi permettono di cambiare colore a tutto il componente quando poi lo vado a riutilizzare in un assieme.A questo proposito ho cercato sul web ed ho trova la macro riportata qui sotto solo che al momento di utilizzarla mi dà il seguente messaggio:

Errore di run-time '13':
Tipo non corrispondente

ed eseguendo il debug mi va ad evidenziare la stringa che qui sotto ho colorato di rosso.
Qualcuno mi sà dare una mano?
Il computer è una workstation Dell precision T5400 con Vista 64 ed inventor suite 2008
Grazie anticipatamente


Public Sub Faces_As_PartRenderStyle()

Dim oPartDoc As PartDocument
Set oPartDoc = ThisApplication.ActiveDocument

Dim oCompDef As ComponentDefinition
Set oCompDef = oPartDoc.ComponentDefinition

Dim oFaces As Faces
Dim oFace As Face

Dim oSurfBodies As SurfaceBodies
Dim oSurfBody As SurfaceBody
Set oSurfBodies = oCompDef.SurfaceBodies
For Each oSurfBody In oSurfBodies
Set oFaces = oSurfBody.Faces
For Each oFace In oFaces
oFace.SetRenderStyle kPartRenderStyle
Next
Next

End Sub
 

MauroM

Utente Standard
Professione: mah!
Software: Inv + SW(purtroppo)
Regione: .
#2
Ciao a tutti,
io ho un problema di questo tipo.Spesso i modelli 3d che i miei fornitori mi passano in formato step hanno le superfici colorate e non mi permettono di cambiare colore a tutto il componente...
mi risulta invece che si riesca a cambiare il colore, puoi postare un file?
 

resquas

Utente Junior
Professione: disegnatore
Software: INVENTOR 2008
Regione: Lombardia
#3
In effetti hai ragione se uso la parte in un assieme posso cambiare colore mentre non riesco a cambiarlo a se stesso,dovrei selezionare a manina tutte le suerfici e,in proprietà faccia, mettere "come parte" allo stile...:eek:
infatti la macro dovrebbe fare tutto sto sporco lavoro...
ho postato un file d'esempio
 

Allegati

Peppe

Utente Standard
Professione: Impiegato
Software: inventor
Regione: Emilia Romagna
#4
Nel browser apri corpi solidi - selezioni il solido - tasto dx - proprietà e selezioni il colore - METTERE spunta su rimuovi sostituzione
 

resquas

Utente Junior
Professione: disegnatore
Software: INVENTOR 2008
Regione: Lombardia
#5
si,in genere funziona ma se provi con il file che ho postato vedrai che non lo fa...presumo sia perchè inventor veda come primario l'impostazione di ogni singola faccia rispetto al solido intero(ad eccezione dell'impostazione "come parte")

Qualcuno comunque ha idea di cosa non vada nella macro?
 

Peppe

Utente Standard
Professione: Impiegato
Software: inventor
Regione: Emilia Romagna
#6
si,in genere funziona ma se provi con il file che ho postato vedrai che non lo fa...presumo sia perchè inventor veda come primario l'impostazione di ogni singola faccia rispetto al solido intero(ad eccezione dell'impostazione "come parte")

Qualcuno comunque ha idea di cosa non vada nella macro?
Con la 2011 funziona..... però vedo che hai 2008
L'ho convertito in stp.... provalo


Cattura.JPG


View attachment stp.zip
 

Wolf81

Utente poco attivo
Professione: Aspirante progettista
Software: Autocad, Inventor, Solid Edge
Regione: Toscana
#7
Ciao a tutti,
io ho un problema di questo tipo.Spesso i modelli 3d che i miei fornitori mi passano in formato step hanno le superfici colorate e non mi permettono di cambiare colore a tutto il componente quando poi lo vado a riutilizzare in un assieme.A questo proposito ho cercato sul web ed ho trova la macro riportata qui sotto solo che al momento di utilizzarla mi dà il seguente messaggio:

Errore di run-time '13':
Tipo non corrispondente

...
Io ho provato con la 2010 e devo dire che inizialmente la macro mi si bloccava, poi con delle piccole modifiche mi funziona anche se, almeno nel mio caso è terribilmente lenta (non so se per le modifiche o perchè su questa macchina ho "solo" 2 GB di RAM). L'errore che segnali tu mi si verifica solo se tento di lanciare la macro originale senza nessun documento aperto, mentre se apro ad esempio il file postato da te, funziona tutto.
Ho apportato piccolissime modifiche alla macro, anche se non ho cambiato il funzionamento originale, inserendo un DoEvents nel ciclo di scansione delle faccie (che almeno nel mio caso è stato necessario perchè altrimenti mi si bloccava il PC) e controllato che sia aperto un documento prima di iniziare. Oltre alle modifiche che ho fatto io, bisognerebbe disablitare l'update dello schermo ad ogni modifica di superficie (probabilmente imputabile proprio al DoEvents aggiunto), ma non ci sono riuscito. Posto le modifiche apportate allo script giusto per vedere se con questo riesci ad eseguire il cambio di colore o meno.
---------------------------------------------------------------------
Sub Faces_As_PartRenderStyle()
Dim CurrentBody As Long
Dim CurrentFaces As Long

Dim oPartDoc As PartDocument
Set oPartDoc = ThisApplication.ActiveDocument

If (Not (oPartDoc Is Nothing)) Then
If (Not (oPartDoc.ComponentDefinition Is Nothing)) Then
Dim oCompDef As ComponentDefinition
Set oCompDef = oPartDoc.ComponentDefinition

Dim oFaces As Faces
Dim oFace As Face

Dim oSurfBodies As SurfaceBodies
Dim oSurfBody As SurfaceBody

Set oSurfBodies = oCompDef.SurfaceBodies

CurrentBody = 0
CurrentFaces = 0
For Each oSurfBody In oSurfBodies
CurrentBody = CurrentBody + 1
Debug.Print "Body " + Str(CurrentBody) + "/" + Str(oSurfBodies.Count)

Set oFaces = oSurfBody.Faces
For Each oFace In oFaces
CurrentFace = CurrentFace + 1
Debug.Print "Face " + Str(CurrentFace) + "/" + Str(oFaces.Count)

oFace.SetRenderStyle kPartRenderStyle

DoEvents
Next
Next
Else
MsgBox "Nessuna parte definita nel progetto corrente"
End If
Else
MsgBox "Nessun progetto aperto"
End If
End Sub