ricavare misure da uno step

Yebisu

Utente Junior
Professione: Geometra
Software: inventor ,solid works, autocad zwcad arcview archicad sketchup
Regione: emilia romagna
Buongiorno è possibile ricavare misure da uno step in maniera automatica ... tento di spiegarmi ho una serie di profili creati dal un telaio (su un software non inventor) , gli associo un codice pippo vorrei sapere quanti metri di pippo uso in quello step.
Se vengono creati da noi di solito abbiamo misure in FX con un parametro lunghezza profilo , ma lo step non ha dimensioni.

Grazie
 

Vittorio

Utente Standard
Professione: progettista
Software: CatiaV5-6R29 HyperMill_2022.1
Regione: Lombardia
Lo STEP non ha una storia di modellazione, non è parametrico in parole povere è un solido morto.
Da quello che ho capito hai dei profilati e vuoi sapere la lunghezza per ordinare il materiale?
Altre alternative alla messa in tavola con le quote.. o misurazione diretta con strumenti di analisi.. non ne vedo.
C'è qualcosa in Solid-edge, si chiama modellazione sincrona, ma non credo che possa esserti d'aiuto.
Ci sarà qualche esperto di Solid-edge che magari mi smentisce.
 

Yebisu

Utente Junior
Professione: Geometra
Software: inventor ,solid works, autocad zwcad arcview archicad sketchup
Regione: emilia romagna
Era la mia paura ovvierò con uno schizzo con la lunghezza.... laborioso , ma più veloce che ridisegnare tutto.
grazie
 

Zac69

Utente Standard
Professione: Disegnatore
Software: Inventor 2022
Regione: Piemonte
Sono finito per caso in questo post in quanto stavo cercando come fare girare una regola dall'assieme.

Io ho trovato questa soluzione al post in questione:

E' una regola iLogic (interna o esterna)


SyntaxEditor Code Snippet' Get the current Part document.
Dim partDoc As PartDocument = ThisDoc.Document

' Get the TransientBRep and TransientGeometry objects.
Dim transBRep As TransientBRep = ThisApplication.TransientBRep
Dim transGeom As TransientGeometry = ThisApplication.TransientGeometry

' Combine all bodies in Part into a single transient Surface Body.
Dim combinedBodies As SurfaceBody = Nothing
For Each surfBody As SurfaceBody In partDoc.ComponentDefinition.SurfaceBodies
If combinedBodies Is Nothing Then
combinedBodies = transBRep.Copy(surfBody)
Else
transBRep.DoBoolean(combinedBodies, surfBody, BooleanTypeEnum.kBooleanTypeUnion)
End If
Next

' Get the oriented mininum range box of all bodies in Part.
' NOTE: "OrientedMinimumRangeBox" was added in Inventor 2020.3/2021.
Dim minBox As OrientedBox = combinedBodies.OrientedMinimumRangeBox

' Get length of each side of mininum range box.
Dim dir1 As Double = minBox.DirectionOne.Length
Dim dir2 As Double = minBox.DirectionTwo.Length
Dim dir3 As Double = minBox.DirectionThree.Length

' Convert lengths to document's length units.
Dim uom As UnitsOfMeasure = partDoc.UnitsOfMeasure

dir1 = uom.ConvertUnits(dir1, "cm", uom.LengthUnits)
dir2 = uom.ConvertUnits(dir2, "cm", uom.LengthUnits)
dir3 = uom.ConvertUnits(dir3, "cm", uom.LengthUnits)

' Sort lengths from smallest to largest.
Dim lengths As New List(Of Double) From {dir1, dir2, dir3 }
lengths.Sort

Dim minLength As Double = lengths(0)
Dim midLength As Double = lengths(1)
Dim maxLength As Double = lengths(2)

' Create surface to represent oriented range box...

' Create starting box with dimensions of oriented rangebox.
Dim startBox As Box = transGeom.CreateBox()
Dim boxMaxPoint As Point = transGeom.CreatePoint(minBox.DirectionOne.Length, minBox.DirectionTwo.Length, minBox.DirectionThree.Length)
startBox.Extend(boxMaxPoint)

' Create transformation matrix to move box to correct location/orientation.
Dim transMatrix As Matrix = ThisApplication.TransientGeometry.CreateMatrix
transMatrix.SetCoordinateSystem(minBox.CornerPoint, minBox.DirectionOne.AsUnitVector.AsVector, minBox.DirectionTwo.AsUnitVector.AsVector, minBox.DirectionThree.AsUnitVector.AsVector)

' Create surface body for the range box.
Dim minBoxSurface As SurfaceBody = ThisApplication.TransientBRep.CreateSolidBlock(startBox)

' Transform range box surface body to the correct location/orientation.
ThisApplication.TransientBRep.Transform(minBoxSurface, transMatrix)

' Display range box on screen.
Dim transac As Transaction = ThisApplication.TransactionManager.StartTransaction(partDoc, "DisplayRangeBox")

Dim cGraphics As ClientGraphics

Try
cGraphics = partDoc.ComponentDefinition.ClientGraphicsCollection.Add("OrientedRangeBox")
Dim surfacesNode As GraphicsNode = cGraphics.AddNode(1)
Dim surfGraphics As SurfaceGraphics = surfacesNode.AddSurfaceGraphics(minBoxSurface)
Dim targetAppearance As Asset

Try
targetAppearance = partDoc.Assets.Item("Clear - Blue")
Catch
Dim sourceAppearance As Asset = ThisApplication.AssetLibraries.Item("314DE259-5443-4621-BFBD-1730C6CC9AE9").AppearanceAssets.Item("InvGen-001-1-2") ' "Clear - Blue"
targetAppearance = sourceAppearance.CopyTo(partDoc)
End Try

surfacesNode.Appearance = targetAppearance

ThisApplication.ActiveView.Update

' Display message with minimum rangebox size.
MessageBox.Show("Dimensioni: " &
minLength.ToString("#.###") & " x " & midLength.ToString("#.###") & " x " & maxLength.ToString("#.###"),
"Profilato", MessageBoxButtons.OK, MessageBoxIcon.Information)
Finally
' Remove range box from screen.
transac.Abort
ThisApplication.ActiveView.Update
End Try


'Scrive la misura massima nelle iProprierties del modello.


iProperties.Value("Custom", "Lunghezza") = maxLength.ToString("#.###")


Alla fine scrive in una proprietà personalizzata la lunghezza
 

Utenti online

Statistiche forum

Discussioni
55,594
Messaggi
474,334
Utenti registrati
95,861
Ultimo utente registrato
Cucurbitacea

Top