Vytisknout stránku | Zavřít okno

VBA Macro

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: iLogic a ETO
Popis fóra: Funkce a makra iLogic, Inventor Engineering to Order (ETO), automatizace a konfigurace výrobků
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=33534
Datum vytištění: 05.čer.2026 v 15:35


Téma: VBA Macro
Odeslal: PopelkaM
Předmět: VBA Macro
Datum odeslání: 02.zář.2022 v 07:45
Dobrý den,
v Inventoru 2021 jsem používal VBA makro pro export struktury sestavy do *.csv.
v Inventoru 2022 došlo v úrovních sestavy k nějaké změně a makro již nefunguje.
Chybová hláška níže.

Poradíte mě někdo?

Popelka



uploads/26140/WriteAssemblyStructure_2022-09-02_07-41-46.txt" rel="nofollow - uploads/26140/WriteAssemblyStructure_2022-09-02_07-41-46.txt



Odpovědi:
Odeslal: Vladimír Michl
Datum odeslání: 02.zář.2022 v 08:14
Zkuste třeba:
occ.Name & "," & occ.ReferencedDocumentDescriptor.FullDocumentName  ' uz ne   .Definition.Document.FileName



-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz emea.support.arkance.world)


Odeslal: PopelkaM
Datum odeslání: 02.zář.2022 v 08:44
Děkuji,
vyzkouším.
Lze někde dohledat změny v psaní kódu napříč verzemi Inventora?

Děkuji Popelka


Odeslal: Navara
Datum odeslání: 02.zář.2022 v 08:54
S každou verzí vychází 'Whats new' v API příručce. Pro 2023 je to zde
https://help.autodesk.com/view/INVNTOR/2023/ENU/?guid=GUID-36B1FFB5-5291-4532-8F11-90E912769B34" rel="nofollow - https://help.autodesk.com/view/INVNTOR/2023/ENU/?guid=GUID-36B1FFB5-5291-4532-8F11-90E912769B34



Odeslal: Navara
Datum odeslání: 02.zář.2022 v 09:09
V tomhle případě si ale myslím, že je problém v typování proměnných.

https://help.autodesk.com/view/INVNTOR/2023/ENU/?guid=GUID-C08B2E67-61F3-4ABF-AD7C-3841FC01FB7E" rel="nofollow - AssemblyComponentDefinition.Occurrences  je typu  https://help.autodesk.com/view/INVNTOR/2023/ENU/?guid=GUID-729F272D-821C-4DFF-B604-8C89035D6D88" rel="nofollow - ComponentOccurrences , kdežto 
https://help.autodesk.com/view/INVNTOR/2023/ENU/?guid=GUID-D35CC9A6-4F93-4AF4-971A-F58747B7814B" rel="nofollow - ComponentOccurrence.SubOccurrences je typu 
https://help.autodesk.com/view/INVNTOR/2023/ENU/?guid=GUID-B94A953F-EFB7-4177-BF6D-237B2691A67B" rel="nofollow - ComponentOccurrencesEnumerator

A na tom se nic nezměnilo


Odeslal: PopelkaM
Datum odeslání: 02.zář.2022 v 10:53
Dobrý den,
tak to je nad mé síly....

Pokouším se z hlavní sestavy modelu Inventora 2022
vyexportovat do csv (nebo xls) celou strukturu modelu.
V excelu potřebuji mít na začátku označenou úroveň podsestavy (,) a její název.

Přiložené makro vytvářelo zkráceně zhruba toto...

70-35852_00.iam
,70-35852_01:1
,,70-35852_0101:1
,,,70-35852_0101_:1
,,,,70-35852_0101-01:1
,,,,70-35852_0101-01:2
,,,,70-35852_0101-02:7

To co není ošetřeno v makru:

Ideální by bylo vyřadit z exportu všechny součásti a normalizované součásti ze všech úrovní a referenční soubory a sestavy.
Je možné,že se toto dá provést až úpravou samotného excelu.

Je možné ve VBA,nebo iLogicem něco takového vytvořit?Smile

S pozdravem Popelka


Odeslal: Navara
Datum odeslání: 02.zář.2022 v 11:07
Určitě dá, jenom v iLgicu je to mnohem jednodušší. Hlavně ten zápis do souboru. a lepší práce s kolekcema.
Referenční výskyty je možné kontrolovat pomoci occurrence.BOMStructure
Pokud jde o normalizované součásti tak asi podle umístění. Jestli jsou uložené v podsložce obsahového centra. 
ThisApplication.DesignProjectManager.ActiveDesignProject.ContentCenterPath


Odeslal: Navara
Datum odeslání: 02.zář.2022 v 11:40
Sub Main

Dim asm As AssemblyDocument = ThisDoc.Document

lines = New List(Of String)()
contentCenterPath = ThisApplication.DesignProjectManager.ActiveDesignProject.ContentCenterPath

Dim fileName As String = SelectFileName()
If String.IsNullOrWhiteSpace(fileName) Then Return

Dim occurrences As IEnumerable(Of ComponentOccurrence) = asm.ComponentDefinition.Occurrences.OfType(Of ComponentOccurrence)
CreateStructure(occurrences, 0)

System.IO.File.WriteAllLines(fileName, lines.ToArray())
End Sub

Private Function SelectFileName() As String
Dim saveDialog As Inventor.FileDialog
ThisApplication.CreateFileDialog(saveDialog)
With saveDialog
.Filter = "CSV (Command delimited)(*.csv)|*.csv"
.DialogTitle = "Specify output filename"
.OptionsEnabled = False
.SuppressResolutionWarnings = True
.CancelError = True
End With
Try
saveDialog.ShowSave()
Return saveDialog.FileName
Catch
Return Nothing
End Try

End Function

Private lines As List(Of String)
Private contentCenterPath As String

Private Sub CreateStructure(occurrences As IEnumerable(Of ComponentOccurrence), level As Integer)
For Each occurrence As ComponentOccurrence In occurrences
If occurrence.BOMStructure = BOMStructureEnum.kReferenceBOMStructure Then Continue For
If IsContentCenter(occurrence) Then Continue For

Dim levelPrefix = New String(",", level)
Dim occName As String = occurrence.Name

Dim occFileName As String = occurrence.Definition.Document.FullFileName
lines.Add(String.Format("{0},{1},{2}", levelPrefix, occName, occFileName))

CreateStructure(occurrence.SubOccurrences.OfType(Of ComponentOccurrence), level + 1)
Next
End Sub

Private Function IsContentCenter(occurrence As ComponentOccurrence) As Boolean
Dim doc As Document = occurrence.Definition.Document
Return doc.FullFileName.StartsWith(contentCenterPath)
End Function


Odeslal: PopelkaM
Datum odeslání: 02.zář.2022 v 12:40
Zkoušel jsem a hlásí....




Odeslal: Navara
Datum odeslání: 02.zář.2022 v 12:49
Zkuste to ještě jednou zkopírovat. Tohle jsem opravoval



Vytisknout stránku | Zavřít okno