Compilazione iProperties negli assiemi

zsolt

Utente poco attivo
Professione: Disegnatore
Software: Autodesk Inventor
Regione: Italia
#1
Salve,
mi chiamo Zsolt e sn nuovo in questo forum. Ho 24 anni e lavoro per un azienda che produce impianti per l'avicoltura. Sono giunto qui per chiedervi aiuto su una questione che mi preoccupa da tempo.
Io ho realizzato un modulo globale iLogic in inventor che utilizzando delle regole esterne e appogiandosi a un file excel esterno, compila diversi campi delle iProperties in automatico cliccando un pulsante di questo form. Funziona alla perfezione, nelle parti singole *.ipt. Il mio problema è il seguente:
io vorrei fare un modulo che funziona anche per gli assiemi e che in automatico andasse a compilare tutte le iProperties dei singoli pezzi presenti in un assieme. Non so però come si comporterebbe con le parti della libreria, perchè quelle le iProperties le hanno gia compilate, quindi sarebbero da escludere, oppure possiamo rinominarle e in seguito non verranno salvate!?!?

Spero che qualcuno di voi riesca a darmi una mano. Intanto vi posto ma regola esterna che compila le iProperties di una singola parte, in pratica vorrei che questa si ripetesse per ogni singola parte del assieme (-libreria??):

i = GoExcel.FindRow("Z:\DISEGNI_INVENTOR\Descrizioni.xlsx", "VALLI_ARTICOLI-e-TRADUZIONI", "Codice Articolo", "=", iProperties.Value ("Project", "Part Number"))
iProperties.Value ("Project", "Description") = GoExcel.CurrentRowValue("Descr.Articolo")
iProperties.Value ("Custom", "Descr. Agg. ITA") = GoExcel.CurrentRowValue("Descr.Agg.Articolo")
iProperties.Value ("Project", "Project") = GoExcel.CurrentRowValue("Gruppo Appartenenza")
iProperties.Value ("Custom", "Descrizione inglese") = GoExcel.CurrentRowValue("Descr.Tradotta")
iProperties.Value ("Custom", "Descr. Agg. ENG") = GoExcel.CurrentRowValue("Descr.Agg.Tradotta")
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#2
Qui trovi il codice in visualbasic per passare tutti gli elementi di un assieme, iLogic non lo conosco e non so se si possa trasportare (usa codice ricorsivo) ma penso valga la pena provare.

F1 -> Guida alla programmazione (API) -> Cut-and-paste sample code -> Bills of Materials
Per quanto riguarda gli elementi di libreria non so dirti ora, magari se ho tempo faccio una prova...

Ciao!
 

zsolt

Utente poco attivo
Professione: Disegnatore
Software: Autodesk Inventor
Regione: Italia
#3
F1 -> Guida alla programmazione (API) -> Cut-and-paste sample code -> Bills of Materials
Per quanto riguarda gli elementi di libreria non so dirti ora, magari se ho tempo faccio una prova...
Scusa l'ignoranza ma non riesco a trovarlo!! :cool:
Con F1 mi apre la guida online....

Per quanto riguarda gli elementi della libreria non penso possano esserci problemi dato che sono solo in lettura, quindi il modulo potrebbe tranquillamento compilare tutte le iProperties tanto quelle della libreria non vengono salvate.

Se mi puoi postare quel codice di prima te ne sarei grato :tongue:

P.s. Comunque guardando la distinata componenti di un assieme basterebbe compilare le iProperties di tutti i componenti della distinta strutturata che non abbiano la Struttura distinta componenti uguale a ACQUISTATO, cioè quelli della libreria.
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#4
F1 di Inventor dalla finestra modellazione, io uso I2011

comunque:
Public Sub BOMQuery()
' Set a reference to the assembly document.
' This assumes an assembly document is active.
Dim oDoc As AssemblyDocument
Set oDoc = ThisApplication.ActiveDocument

Dim FirstLevelOnly As Boolean
If MsgBox("First level only?", vbYesNo) = vbYes Then
FirstLevelOnly = True
Else
FirstLevelOnly = False
End If

' Set a reference to the BOM
Dim oBOM As BOM
Set oBOM = oDoc.ComponentDefinition.BOM

' Set whether first level only or all levels.
If FirstLevelOnly Then
oBOM.StructuredViewFirstLevelOnly = True
Else
oBOM.StructuredViewFirstLevelOnly = False
End If

' Make sure that the structured view is enabled.
oBOM.StructuredViewEnabled = True

'Set a reference to the "Structured" BOMView
Dim oBOMView As BOMView
Set oBOMView = oBOM.BOMViews.Item("Structured")

Debug.Print "Item"; Tab(15); "Quantity"; Tab(30); "Part Number"; Tab(70); "Description"
Debug.Print "----------------------------------------------------------------------------------"

'Initialize the tab for ItemNumber
Dim ItemTab As Long
ItemTab = -3
Call QueryBOMRowProperties(oBOMView.BOMRows, ItemTab)
End Sub

Private Sub QueryBOMRowProperties(oBOMRows As BOMRowsEnumerator, ItemTab As Long)
ItemTab = ItemTab + 3
' Iterate through the contents of the BOM Rows.
Dim i As Long
For i = 1 To oBOMRows.Count
' Get the current row.
Dim oRow As BOMRow
Set oRow = oBOMRows.Item(i)

'Set a reference to the primary ComponentDefinition of the row
Dim oCompDef As ComponentDefinition
Set oCompDef = oRow.ComponentDefinitions.Item(1)

Dim oPartNumProperty As Property
Dim oDescripProperty As Property

If Typeof oCompDef Is VirtualComponentDefinition Then

'Get the file property that contains the "Part Number"
'The file property is obtained from the virtual component definition
Set oPartNumProperty = oCompDef.PropertySets _
.Item("Design Tracking Properties").Item("Part Number")

'Get the file property that contains the "Description"
Set oDescripProperty = oCompDef.PropertySets _
.Item("Design Tracking Properties").Item("Description")

Debug.Print Tab(ItemTab); oRow.ItemNumber; Tab(17); oRow.ItemQuantity; Tab(30); _
oPartNumProperty.Value; Tab(70); oDescripProperty.Value
Else

'Get the file property that contains the "Part Number"
'The file property is obtained from the parent
'document of the associated ComponentDefinition.
Set oPartNumProperty = oCompDef.Document.PropertySets _
.Item("Design Tracking Properties").Item("Part Number")

'Get the file property that contains the "Description"
Set oDescripProperty = oCompDef.Document.PropertySets _
.Item("Design Tracking Properties").Item("Description")

Debug.Print Tab(ItemTab); oRow.ItemNumber; Tab(17); oRow.ItemQuantity; Tab(30); _
oPartNumProperty.Value; Tab(70); oDescripProperty.Value

'Recursively iterate child rows if present.
If Not oRow.ChildRows Is Nothing Then
Call QueryBOMRowProperties(oRow.ChildRows, ItemTab)
End If
End If
Next
ItemTab = ItemTab - 3
End Sub
 

zsolt

Utente poco attivo
Professione: Disegnatore
Software: Autodesk Inventor
Regione: Italia
#5
Grazie adesso provo a studiarlo un po e vedo se riesco a cavarmela in VB anche se preferivo le regole esterne di iLogic così il modulo esterno sarebbe gia a disposizione a tutti gli utenti della rete. Se avete altri suggerimenti vi ringrazio in anticipo. :wink:
 

zsolt

Utente poco attivo
Professione: Disegnatore
Software: Autodesk Inventor
Regione: Italia
#7
Per adesso sono riuscito a farlo partire in Vb, funziona (non da errori), ma non so assolutamente cosa faccia, visto che non vedo nessun tipo di modifiche! :frown: E poi non so come collegargli il mio file excel dove deve an dare a leggere le iProperties e compilarle.
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#8
Beh, non fa modifiche, legge le iproperties e le stampa a video; era solo un esempio di come scorrere i vari componenti di un assieme.
 

zsolt

Utente poco attivo
Professione: Disegnatore
Software: Autodesk Inventor
Regione: Italia
#11
Aaaaaahhh oook visto :-D Ma come faccio a dirgli, che lui perm ogni componente deve andare a compilare certe iProperties usando il codice che ho io???
 

Catafratto

Utente Standard
Professione: Disegnatore/progettista
Software: Inventor 2016
Regione: Veneto
#12
L'idea è che vedi come funziona la macro per quanto riguarda la ricerca di assiemi e sottoassiemi e parti componenti e cerchi di riportarla in iLogic... Si può fare anche l'inverso ma è più laborioso se non hai pratica, soprattutto prelevare i dati da excel.