Ricavare lunghezza pezzo da file step

GiGa

Moderatore
Staff Forum
Professione: Progettista/Disegnatore
Software: Mechanical, Inventor, 3DS Max
Regione: Roma
#22
Con iLogic puoi usare la funzione
MessageBox.Show(Measure.ExtentsLength & "x" & Measure.ExtentsWidth & "x" & Measure.ExtentsHeight, "Dimensioni")
per avere le "lunghezze fuori tutto".

C'è però il grosso limite che Length, Width e Height sono allineati con la terna di riferimento XYZ: bisogna vedere se i profili che hai sono sempre orientati nello stesso modo secondo la terna.
Si potrebbe poi provare ad automatizzare il tutto per fargli scrivere un fle excel con la dimensione voluta... ma servono altre informazioni (e un po' di tempo per provare)
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#23
Ieri sera ho fatto una prova e con il sistema dello sviluppo per il profilo postato funziona. Il problema è che, come per la soluzione di GiGa, 1) non si può garantire che lo "sviluppo" sia sempre quello che desideriamo, 2) che nel risultato lunghezza x altezza ottenuto in questo modo la... lunghezza sia sempre la lunghezza e non si scambino i valori. Se hai un po' di tempo ti posso finire la macro e provi, ma temo che un po' di controllo dovrai comunque farlo. E no, mai sentito il comando grezzo...
 
Professione: Disegnatore
Software: Autocad2009
Regione: Veneto
#24
Questo http://www.cad3d.it/forum1/showthread.php?t=21614 per quanto riguarda il comando di Catia, sembrerebbe proprio quello che serve a me...
Per il momento siamo in tre a tirar fuori misure...ma se in futuro ci fosse la possibilità di far girare una macro con anche la possibilità di esportare in Excel le letture, beh che dire, ben venga dato che quello che sto facendo adesso è solo una parte di tutto il lavoro e quindi tra un po' mi potrebbe tornare MOLTO utilie.
Purtroppo gli step non sono tutti sullo stesso piano quindi la terna varia a seconda del pezzo.
Grazie a tutti per il tempo che state spendendo
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#25
Il comando grezzo non esiste, ma quando derivi un assieme hai la possibilità di generare un parallelepipedo che contiene esattamente l'assieme. Ora si può fare un assieme che contiene solo un profilo e derivarlo ottenendo l'equivalente del "grezzo", ma poi come si fa a sapere con certezza qual è la misura che ti serve (nel caso di pezzi molto corti)?
Forse dividendoli manualmente per sezioni simili...
E' diventata una questione di principio!

:36_1_3:
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#26
Proviamo così: ho trovato il metodo che restituisce in rettangolo che contiene il pezzo, rettangolo orientato lungo gli assi (l'help dice che il rettangolo può avere un po' di tolleranza). La macro che allego ti scrive in mm nella finestra di debug le dimensioni che legge lungo i tre assi: vedi tu se un elenco su file di tali valori ti è utile (si possono escludere i valori che sono chiaramente legati alla sezione...) Se va dopo te la sistemo meglio.

Buona fortuna, con questa ho finito le idee!

Public Sub MisuraRangeBox()

Dim opart As PartDocument

Dim oApp As Inventor.Application
Set oApp = ThisApplication

Set opart = oApp.ActiveEditObject

Dim oPartDef As ComponentDefinition
Set oPartDef = opart.ComponentDefinition

Dim oRange As Box
Set oRange = oPartDef.RangeBox

Dim oMin() As Double, oMax() As Double
Call oRange.GetBoxData(oMin(), oMax())

Dim i As Integer

Debug.Print "X: "; (oMax(0) - oMin(0)) * 10
Debug.Print "Y: "; (oMax(1) - oMin(1)) * 10
Debug.Print "Z: "; (oMax(2) - oMin(2)) * 10

End Sub
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#29
Dimenticavo una cosa: nella misura vengono tenuti in considerazione anche assi, piani (visibili e no) ecc. che "sbordano dal pezzo: quindi se ce ne sono occorre eliminarli o ridimensionarli in modo che siano all'interno del pezzo.
 
Professione: Disegnatore
Software: Autocad2009
Regione: Veneto
#30
:finger:Ho provato la macro:finger:. Rimane sempre qualche differenza sulle lunghezze.. Comunque se l'errore è sui 4 o 5mm a me va più che bene tanto per i tagli inclinati butto su 20mm per poter fare il taglio in macchina...:wink:
Grazie infinite:biggrin:
 

Allegati

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#31
Ok, butta tutti i profili in un assieme e fai partire la macro. Scrive i risultati in un file testo (Nomepezzo / X,Y,Z)
In bocca al lupo e ricorda: se il pezzo è storto o geometrie di lavoro sbordano il risultato non è buono. In bocca al lupo e fammi sapere come va!

Public Sub MisuraRangeBox()

Dim oAssy As AssemblyDocument


Dim oApp As Inventor.Application
Set oApp = ThisApplication

Set oAssy = oApp.ActiveDocument

Dim oCompOccs As ComponentOccurrences
Set oCompOccs = oAssy.ComponentDefinition.Occurrences

Dim oOcc As ComponentOccurrence
Dim oPart As PartDocument
Dim oPartDef As ComponentDefinition
Dim oRange As Box
Dim oMin() As Double, oMax() As Double
Dim taglio As Double

'Valore da aggiungere alla misura per ottenere il taglio
taglio = 0

'Prepara il file elenco
Open "C:\elenco.txt" For Output As #1

'Ciclo attraverso tutti gli elementi dentro un assieme
For Each oOcc In oCompOccs
Set oPart = oOcc.Definition.Document

Set oPartDef = oPart.ComponentDefinition
Set oRange = oPartDef.RangeBox

Call oRange.GetBoxData(oMin(), oMax())

'Scrive il nome del file
'Print #1, oPart.FullFileName

'Scrive il nome che si legge nel browser
Print #1, oPart.DisplayName

'Scrive i risultati
Print #1, "X: "; (oMax(0) - oMin(0)) * 10 + taglio
Print #1, "Y: "; (oMax(1) - oMin(1)) * 10 + taglio
Print #1, "Z: "; (oMax(2) - oMin(2)) * 10 + taglio
Next oOcc

'Chiude il file
Close #1
End Sub
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#32
Nota: ti stampa ogni parte, quindi se metti 5 volte lo stesso file te lo ritrovi in elenco 5 volte.
 
Professione: Disegnatore
Software: Autocad2009
Regione: Veneto
#33
L'ho provata in velocità ma mi sembra ottima:finger: Grazie infinite. Appena ho un attimo faccio delle prove più accurate e poi ti faccio sapere. :biggrin: FANTASTICA :biggrin: