Cantidad de piezas en plano INVENTOR+VAULT

Cantidad de piezas en plano INVENTOR+VAULT

Anonymous
No aplicable
3.034 Vistas
8 Respuestas
Mensaje 1 de 9

Cantidad de piezas en plano INVENTOR+VAULT

Anonymous
No aplicable

Buenas tardes,

Trabajamos con Inventor y con Vault. La pregunta es la siguiente:

¿hay alguna forma de que aparezca en el plano de una pieza, la cantidad de ésta en un conjunto determinado?

Entiendo que la cantidad de pieza es un parámetro que depende de un ensamblaje, no de la pieza en si.

Actualmente ya generamos listas de materiales, donde figuran las distintas cantidades de piezas en un ensamblaje, pero lo más práctico para la fabricación, sería que en el plano figurara la cantidad referida a un ensamblaje en concreto,de forma automática. Es eso posible de alguna forma? 

Muchas gracias.

Soluciones aceptadas (2)
3.035 Vistas
8 Respuestas
Respuestas (8)
Mensaje 2 de 9

Sergio.D.Suárez
Mentor
Mentor

Hola compañero, Te comento como lo resolví yo, espero que los compañeros del foro compartan su experiencia así intercambiamos ideas. Utilicé reglas Ilogic

 

Primero identifique el ensamblaje maestro y luego intente guardar una propiedad personalizada "n" en cada pieza que represente la cantidad de piezas desde el Qty del ensamble maestro. Esta propiedad la capturaba en el identificador de vista para especificar la cantidad, cuando se variaba el ensamble habìa que actualizar la regla para que corrija las cantidades. Funcionaba muy bien, excepto por un problema, si uno reutilizaba alguna pieza del ensamble, ya sea un bulón o una pieza reutilizable de un almacèn propio de la empresa, la cantidad variaría y se necesitarían tantas propiedades como ensamblajes maestros que utilicen esta pieza... bastante problemático...la propiedad personalizada debería tener el nombre del codigo del proyecto del ensamblaje maestro por ejemplo.

 

Como segundo camino que me dio muy buen resultado cree sucesivas hojas en el archivo de dibujo, y la primera la exclui del conteo y de la impresión, en esta hoja que denomine "tabla" (todo este trabajo lo hacía automaticamente mi regla), le coloque la tabla de solo partes de la lista de materiales del ensamblaje maestro, y en cada hoja del archivo de dibujo, que encontrara una pieza, mi código buscaba el nombre del archivo de la vista, lo comparaba con la lista de materiales y si lo encontraba me copiaba la cantidad y la traia a mi identificador de vista, si no encontraba la pieza, pedia que retirara esa vista porque no pertenecia al proyecto. Andaba muy bien, excepto que no podia recuperar cantidades de subensamblajes (era una lista de solo partes). o sea que en el identificador de vista de subensamble no podia recuperar la cantidad.

 

Por último y es la regla que vengo mejorando y utilizando, se me ocurrio colocar en la primera hoja una vista del ensamblaje, ocultarla y colocarle un nombre especifico "Model_data", y en las sucesivas hojas donde exista una vista de dibujo, buscar el nombre del archivo y compararlo con la BOM del archivo de ensamblaje de "Model_data" y extraer la cantidad desde allí, si es pieza de la pestaña solo partes y si es ensamblaje buscar en todos los hijos hasta encontrarla y copiar la cantidad, y el proceso similar en los procedimientos anteriores. Limitaciones, si un sub-subensamble se utiliza en mas de un subensamble, la cantidad la extraeria de un solo subensamble, supongo que podria haberla mejorado, pero como es una situación que en mi caso nunca se da, no me vi en la necesidad de efectuar tal cambio.

Estas reglas me ayudaron mucho para controlar las piezas a cortar por láser en equipos que necesitaban 300 piezas diferentes por ejemplo, de las cuales si las cantidades las tenía que ingresar a mano, seguramente me podría equivocar, hasta ahora no ha habido errores de cantidades en planos, si errores de proveedor que descubrimos cuando controlamos cantidades y nos suelen mandar menos piezas.

Mañana te subiré la regla porque no la tengo a mano en este equipo. Saludos


Please accept as solution and give likes if applicable.

I am attaching my Upwork profile for specific queries.

Sergio Daniel Suarez
Mechanical Designer

| Upwork Profile | LinkedIn

Mensaje 3 de 9

Anonymous
No aplicable

Buenos dias @Sergio.D.Suárez .

Gracias por tu respuesta. A priori resuelve en parte mi duda, sin embargo en nuestro caso si que utilizamos "sub-subensambles". Aparte de eso el proceso de creación de una hoja alternativa, teniendo que insertar el ensamblaje en cuestión es un proceso algo lento para un ensamblaje de dimensiones considerables, en el que haya muchas piezas.

La idea seria que al insertar la vista de una pieza, en una parte del plano figurara automáticamente la cantidad de ésta.

(Por pedir que no quede!). Indagaré un poco más, a ver si Ilogic me lo resuelve de alguna forma.

0 Me gusta
Mensaje 4 de 9

Claudio_Fortunato
Advisor
Advisor
Solución aceptada

Hola @Anonymous 

Voy a tratar de aportar algo desde mi experiencia.

Como bien decís, la cantidad una pieza en un ensamble, es una propiedad del ensamble y no de la pieza.

Si intentas hacer que te aparezca la cantidad en el plano de la pieza, te encontrarás con algunos problemas como los que te menciona @Sergio.D.Suárez. Además del problema de cómo haces cuando una pieza la usas en diferentes ensambles, también tendrás el problema cuando la misma pieza aparece en más de un subensamble del ensamble principal. No tendrás una manera simple de lograrlo.

Si bien, con iLogic puedes armar algunas reglas para hacerlo, siempre terminarás en el mismo problema.

Y creo que el problema principal es que es un error de concepto tratar de lograr eso. Como bien dices, es una propiedad del ensamble y no de la pieza.

Si tu necesidad es saber qué cantidad de una determinada pieza debes fabricar cuando necesitas fabricar un determinado ensamble, la solución más simple al problema es usando Vault.

En Vault, usando los artículos (o items para el programa en inglés), podrás tener la BOM del ensamble y cambiando simplemente la forma de visualizarla, podrás ver la suma de los componentes que forman ese ensamble. 

Te muestro un ejemplo: 

 

 

BOM 1.PNG

En esta primera imagen, puedes ver un ensamble con sus respectivos códigos de artículo. Está marcado un componente (en este caso es pintura, pero aplica igual para cualquier otro tipo de componente), que aparece dos veces en el ensamble con una determinada cantidad.

 

 

BOM 2.PNG

 

En esta segunda imagen, puedes ver el mismo ensamble, pero se ha activado la vista de sólo piezas y aquí puedes ver el componente mencionado antes que aparece sumándose las cantidades.

La lista de las imágenes se puede exportar para generar una orden de fabricación con las cantidades necesarias.

Como podrás ver, esta solución es mucho más simple.

Espero que esto te sirva para lo que necesitas hacer.

 

Saludos,

Claudio Fortunato
Consultor independiente

Mensaje 5 de 9

Sergio.D.Suárez
Mentor
Mentor

que buen aporte @Claudio_Fortunato !  Sepan disculparme mi ignorancia relacionada a Vault, debido a que trabaje sin necesidad de bóveda por algunos años, estoy muy desactualizado en el tema Emoticono frustrado .

Y es verdad lo que se menciona de la sencillez (y la verdad que a medida que uno agrega cosas las reglas se complican), en este video ejemplificativo, demuestro el uso de una de las reglas mas sencillas "nota general selección " ( tengo otras que se vuelven más complejas porque deben comparar vistas y calcular cual es la vista principal , cual es chapa desplegada, etc, en todas las hojas del conjunto).

 

Private Sub Main()
	Dim tip As Document = ThisDoc.Document
	If tip.DocumentType = Inventor.DocumentTypeEnum.kDrawingDocumentObject  Then	
		check_Model
	Else
		MessageBox.Show("Debe abrir un archivo de dibujo", "Nota General Todo")
	End If
End Sub

Sub check_Model
Dim oDoc As DrawingDocument
oDoc = ThisDoc.Document
Dim oSheet As Sheet
oSheet = oDoc.Sheets(1)
Dim oViews As DrawingViews
oViews = oSheet.DrawingViews
Dim n As Integer = oViews.Count
Dim i As Integer
For i = 1 To n
	Dim oview As DrawingView =oSheet.DrawingViews.Item(i)
	If oview.Name="Model_Data" Then
		Agregar_Nota
		Exit Sub
		Exit For
	End If
Next
Insert_MasterView	
Agregar_Nota
End Sub

Sub Agregar_Nota

Dim oDoc As DrawingDocument
oDoc = ThisDoc.Document
Dim oSheet As Sheet
oSheet = oDoc.ActiveSheet
Dim oViews As DrawingViews
Dim oView As DrawingView

Line1 :
oView = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kDrawingViewFilter, "Seleccione Vista")
If oView Is Nothing Then
	Exit Sub
Else
	If oView IsNot Nothing Then

		oViewModelDoc = oView.ReferencedDocumentDescriptor.ReferencedDocument
		Dim oViewModelName As String = oView.ReferencedDocumentDescriptor.ReferencedDocument.DisplayName
		
		Dim oViewMaster As DrawingView
		oViewMaster = oDoc.Sheets(1).DrawingViews.Item(1)
		InventorVb.DocumentUpdate()
		oViewMasterModelDoc = oViewMaster.ReferencedDocumentDescriptor.ReferencedDocument
		oViewMasterModelName = oViewMaster.ReferencedDocumentDescriptor.ReferencedDocument.DisplayName
			
		Dim oBOM As BOM
		oBOM = oViewMasterModelDoc.ComponentDefinition.BOM
		    ' Set the structured view to 'all levels'
		oBOM.StructuredViewFirstLevelOnly = False
		    ' Make sure that the structured view is enabled.
		oBOM.StructuredViewEnabled = True
		    ' Make sure that the parts only view is enabled.
		oBOM.PartsOnlyViewEnabled = True
		    ' Establece el tipo de lista de materiales, estructurado o solo partes
	
		If oViewModelDoc.DocumentType = Inventor.DocumentTypeEnum.kAssemblyDocumentObject Then
			
		Dim oBOMView As BOMView
		oBOMView = oBOM.BOMViews.Item(1)'Model data

		  Call ListItems(oBOMView.BOMRows, 0, oViewModelName, oView)
		  
		End If

		If oViewModelDoc.DocumentType = Inventor.DocumentTypeEnum.kPartDocumentObject Then
			
		Dim oBOMView As BOMView
		oBOMView = oBOM.BOMViews.Item(3)'Model data

		  Call ListItems(oBOMView.BOMRows, 0, oViewModelName, oView)
		  
		End If

	End If
End If
GoTo Line1
End Sub

Sub ListItems(Rows As BOMRowsEnumerator, indent As Integer,oViewModelName As String,oView As DrawingView)
Dim oBOMRow As BOMRow
sFont =  "ISOCPEUR"  ' "ISOCP_IV25"
For Each oBOMRow In Rows
	Dim rDoc As Inventor.Document
	rDoc = oBOMRow.ComponentDefinitions.Item(1).Document
	Dim rDocName As String = rDoc.DisplayName 
	If rDocName <> oViewModelName Then
	    If Not oBOMRow.ChildRows Is Nothing Then
	        Call ListItems(oBOMRow.ChildRows, indent + 1,oViewModelName,oView )
	    End If
	Else
		If rDoc.DocumentType = Inventor.DocumentTypeEnum.kAssemblyDocumentObject Then tipo="Ensamble: "
		If rDoc.DocumentType = Inventor.DocumentTypeEnum.kPartDocumentObject Then tipo="Pieza: "
		
		Cod= iProperties.Value(oViewModelName, "Custom", "C")'iProperties.Value(oModelName, "Project", "Part Number") 
		n1 =  oBOMRow.ItemQuantity
		sFSize1 = 0.25 'font size in cm 
		Código = "<StyleOverride Font='" & sFont & "' FontSize='" & sFSize1 & "' Bold='True'>" _
		&"Código: " & "<Property Document='model' PropertySet='User Defined Properties' Property='C' " & _
		"FormatID='{D5CDD505-2E9C-101B-9397-08002B2CF9AE}' >C</Property></StyleOverride>"
		Provisión = "<StyleOverride Font='" & sFont & "' FontSize='" & sFSize1 & "' Bold='True'>" _
		&"Provisión: " & "<Property Document='model' PropertySet='User Defined Properties' Property='P' " & _
		"FormatID='{D5CDD505-2E9C-101B-9397-08002B2CF9AE}' >P</Property></StyleOverride>"
		Descripción ="<StyleOverride Font='" & sFont & "' FontSize='" & sFSize1 & "' Bold='True'><Property Document='model' PropertySet='Design Tracking Properties' Property='Description' FormatID='{32853F0F-3444-11D1-9E93-0060B03C1CA6}' PropertyID='29'>DESCRIPTION</Property></StyleOverride>"
		d1= "<StyleOverride Font='" & sFont & "' FontSize='" & sFSize1 & "' Bold='True'>"& tipo & "</StyleOverride>"
		d2= "<StyleOverride Font='" & sFont & "' FontSize='" & sFSize1 & "' Bold='True'>Cantidad: </StyleOverride>"
		d3= "<StyleOverride Font='" & sFont & "' FontSize='" & sFSize1 & "' Bold='True'>"& n1 & "</StyleOverride>"
		oView.Label.FormattedText = Código & "<Br/>" _
		& d1 & Descripción & "<Br/>" _
		& Provisión & "<Br/>" _
		& d2 & d3
		CentText = ThisApplication.TransientGeometry.CreatePoint2d(oView.Center.X , oView.Center.Y + oView.Height/2 + sFSize1*12)
		oView.Label.Position= CentText
		oView.Label.HorizontalJustification = HorizontalTextAlignmentEnum.kAlignTextLeft	
		oView.ShowLabel = True
	End If
Next

End Sub

Sub Insert_MasterView 
	
Dim oDoc As DrawingDocument
oDoc = ThisApplication.ActiveDocument
Dim oSheet As Sheet
oSheet = oDoc.ActiveSheet
SheetWidth=ActiveSheet.Width/10  'sheet units in cm
SheetHeight = ActiveSheet.Height/10 'sheet units in cm
oTG = ThisApplication.TransientGeometry
oPoint1 = oTG.CreatePoint2d(SheetWidth/2, SheetHeight/2)' view insert point

' Create a new FileDialog object.
Dim oFileDlg As Inventor.FileDialog
ThisApplication.CreateFileDialog(oFileDlg)
oFileDlg.Filter = "Archivo de ensamblaje (*.iam)|*.iam"
oFileDlg.FilterIndex = 1
oFileDlg.DialogTitle = "Seleccione ENSAMBLAJE PRINCIPAL para extraer cantidades de piezas"
oFileDlg.InitialDirectory = oTLoc
oFileDlg.InsertMode = False
oFileDlg.MultiSelectEnabled = False
oFileDlg.SuppressResolutionWarnings = True
oFileDlg.CancelError = False
oFileDlg.ShowOpen

Dim oViewModelDoc As Document
oViewModelDoc = ThisApplication.Documents.Open(oFileDlg.FileName, False)
Dim NewView As DrawingView
NewView =oDoc.Sheets.Item(1).DrawingViews.AddBaseView(oViewModelDoc, oPoint1, 0.05, ViewOrientationTypeEnum.kIsoBottomLeftViewOrientation, DrawingViewStyleEnum.kShadedDrawingViewStyle, "Default")				
NewView.Suppressed = True																
NewView.Name = 	NewView.Name.ToUpper.Replace(NewView.Name, "Model_Data")	
	 	
End Sub

Esta es una de las reglas más sencillas acerca de la cantidad, ya que solo hay que seleccionar la vista donde se cargaran los datos en edit view label, seguramente la regla no les funcione porque yo tengo cargadas las propiedades personalizadas de "C" código del elemento, "P" Provisión del elemento, donde a su vez hay cargados parámetros de medida de cada pieza. Por ello la regla es orientativa, tal vez podría enfocar un método más efectivo.

Saludos colegas!

 

 


Please accept as solution and give likes if applicable.

I am attaching my Upwork profile for specific queries.

Sergio Daniel Suarez
Mechanical Designer

| Upwork Profile | LinkedIn

Mensaje 6 de 9

Anonymous
No aplicable

Buenos días @Sergio.D.Suárez  y @Claudio_Fortunato ,

gracias por vuestras respuestas, Actualmente estoy utilizando Vault y generando BOM para la cantidad de piezas y estoy encantado. La única duda es que desde taller se quejan de que tienen que mirar la lista para saber cuantas piezas tienen que fabricar. La idea era a ver si había alguna forma "sencilla" de que saliera la cantidad en el plano, sabiendo ya de primeras que era complicado. Muchas gracias por vuestras respuestas.

 

Un saludo,

0 Me gusta
Mensaje 7 de 9

Sergio.D.Suárez
Mentor
Mentor
Solución aceptada

Hola compañero, olvide mencionar otra forma que puede ser factible. Si tienes un dibujo de una pieza por ejemplo y quieres la cantidad de la pieza, puedes sencillamente colocar la BOM del ensamblaje que contiene la pieza, seleccionas el cuadrado superior de la esquina en la lista de materiales al editarla, y luego tildas visible, para ocultar todas las filas, por ultimo haces visible la columna de tu pieza. Es un método rápido y efectivo, el único inconveniente es que cada vez que se agreguen piezas nuevas al ensamblaje, estas aparecerán como nuevas filas que deberán ser ocultadas. Cada vez que se modifique la cantidad en el ensamblaje, esta cantidad se actualizara en la lista de piezas. Saludos!


Please accept as solution and give likes if applicable.

I am attaching my Upwork profile for specific queries.

Sergio Daniel Suarez
Mechanical Designer

| Upwork Profile | LinkedIn

Mensaje 8 de 9

Anonymous
No aplicable

Buenas tardes, bien he leido las anteriores respuestas y veo que son bien planteadas y aunque desconozco de Ilogic como de Vault creo podrian ayudar bastante y ser las definitivas para esta solucion, aunque encontre una manera un poco mas sencilla pero con una condicion de "actualizar los datos manualmente" (Ctrl+c y Ctrl+v).

Bien lo primero que hice fue ubicarme en mi BOM de el ensamblaje principal y crear una propiedad personalizada llamada "QTY PIEZA", luego solamente la ubico al lado de mi propiedad definida por el BOM "QTY", ahora solamente arrastro todos los valores y los pego en mi propiedad personalizada, ahora la unica condicion para que esta sirva es que si insertamos una pieza en mi ensamblaje sea nueva o repetida simplemente ingreso al BOM del ensamblaje principal copio la fila "QTY" y pego en mi fila personalizada "QTY PIEZA".

No sobra decir que debemos llamar la propiedad personalizada en el cajetin de nuestro plano.

Espero sirva de alguna forma a la ayuda de esta solucion simple pero que a mi me ha funcionado hasta ahora.

Juan Sierra

0 Me gusta
Mensaje 9 de 9

emaiolino
Advocate
Advocate

Otra opción (un poco más artesanal) además de las explicadas correctamente por @Sergio.D.Suárez y por @Claudio_Fortunato es que fuera del plano coloques una vista del ensamble y el correspondiente baloon de la pieza (solo ese) y cuando haces la part list usas el filtro mostrando solamente la que tiene el baloon asociado.



Esteban Maiolino
Titular EMBA Proyectos
Sitio web o nombre del blog
Facebook | Twitter | LinkedIn

0 Me gusta