Diskuzní fórum a databáze tipů a utilit pro AutoCAD, Inventor, Revit a další produkty Autodesk - od firmy Arkance Systems [www.cadforum.cz]
CZ | SK | EN | DE
Přihlášení
či registrace
   právě nás čte: 18542 
RSS kanál - CAD tipy RSS tipy
RSS diskuze

Diskuze Diskuzní fórum, poradna

 

NápovědaCAD diskuze, rady, výměna zkušeností

 
CAD Fórum - Homepage Veřejné diskuzní fórum k CAD aplikacím - ptejte se na libovolné otázky týkající se oboru CAx, podělte se o vaše znalosti a zkušenosti s programy AutoCAD, Inventor, Revit, Fusion 360, 3ds Max a s dalšími CAD aplikacemi. Zaregistrujte se nebo se přihlašte a zašlete váš příspěvek do odpovídajícího fóra. Viz další informace o CAD Fóru. Nechcete se registrovat? Zeptejte se v naší Facebook poradně.
Fórum nenahrazuje technický support firmy Arkance Systems (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.cadstudio.cz
  FAQ FAQ  Prohledat fórum   Události   Registrovat Registrovat  Přihlásit Přihlásit

Téma uzavřenoAutomatizace - otevření modelu, export dxf...

 Odpovědět Odpovědět archiv
Autor
michalkopriva Zobrazit panel
Diskutér
Diskutér

Přihlášen: 29.čer.2017
Lokalita: ČR (Pha)
Používám:
Inventor Pro 2018
Stav: Offline
Bodů: 27
Přímý odkaz na tuto zprávu Téma: Automatizace - otevření modelu, export dxf...
    Zasláno: 20.srp.2019 v 09:59
Zdravím,

Zatím se mi nepovedlo něco podobného najít, tak snad někdo poradí.

Je možné využít iLogic + Macro k tomu, aby mi Inventor sám otevřel model, vyexportoval dxf dle nějakého pravidla (to mám), bez uložení model zavřel... a tak pořád dokola? V excelu by byly názvy modelů (např.: A-321654, A123456, 123456, 19-108539...), které by vyhledával.

Bohužel nevyužíváme Vault od Autodesku, máme BlueCielo Meridian. :-/

Děkuji za nápady a pomoc.
Zpět nahoru
Vladimír Michl Zobrazit panel
Moderátor
Moderátor
Avatar
Arkance Systems

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Dodáváme produkty Autodesk
Stav: Offline
Bodů: 21434
Přímý odkaz na tuto zprávu Zasláno: 20.srp.2019 v 11:06
Asi by šlo řešit přes Plánovač úloh, iLogic a X-Tools, ale bude to výrazně složitější než s Vaultem.
Vladimír Michl (moderátor)
Arkance Systems s.r.o. - www.arkance-systems.cz
(podpora viz hd.cads.cz)
Zpět nahoru
Navara Zobrazit panel
Arkance Systems support
Arkance Systems support
Avatar
Arkance Systems

Přihlášen: 08.zář.2008
Lokalita: ČR (Pha)
Používám:
Inventor
Stav: Offline
Bodů: 1636
Přímý odkaz na tuto zprávu Zasláno: 20.srp.2019 v 11:16
Řešitelné to určitě je. Nicméně v rámci stability a odolnosti bych to dělal jako AddIn, který nevyžaduje například otevřený soubor pro spuštění.
 
Jinak jako zdroj je asi vhodnější použít nějaký textový soubor, než excel, ale to už je čistě na vás.
 
EDIT:
Kromě samotného exportu do DXF by to mohlo vypadat asi nějak takhle...
 
Sub Main()
    Dim excelFile As String = "C:\Temp\PartsForDxf.xlsx"
    Dim excelSheet As String = "List1"
    Dim dataFromExcel = ReadDataFromExcel(excelFile, excelSheet)
    Dim fileNames = CreateFileNames(dataFromExcel)
    For Each fileName As String In fileNames
        'Check file exists
        If Not System.IO.File.Exists(fileName) Then
            MsgBox("File not found" & vbCrLf & fileName)
            Continue For
        End If
        'Open file
        Dim partDocument As PartDocument = ThisApplication.Documents.Open(fileName)
        'Export to DXF
        ExportToDxf(partDocument)
        'Close without changes
        partDocument.Close(True)
    Next
End Sub
Private Sub ExportToDxf(partDocument As PartDocument)
    'Implement your export to DXF here
    MsgBox(String.Format("Exporting to dxf...{1}{0}", partDocument.FullFileName, vbCrLf))
End Sub
Private Function CreateFileNames(dataFromExcel As List(Of String)) As List(Of String)
    Dim fileNames As New List(Of String)
    For Each fileName As String In dataFromExcel
        fileNames.Add(String.Format("C:\Temp\{0}.ipt", fileName))
    Next
    Return fileNames
End Function
Private Function ReadDataFromExcel(excelFile As String, excelSheet As String) As List(Of String)
    Dim cellValues As New List(Of String)
    Dim column As String = "A"
    Dim row As Integer = 1
    GoExcel.Open(excelFile, excelSheet)
    Do
        Dim cellAddress As String = String.Format("{0}{1}", column, row)
        Dim cellValue = GoExcel.CellValue(cellAddress)
        If (cellValue Is Nothing OrElse cellValue.ToString() = "") Then
            Exit Do
        End If
        cellValues.Add(cellValue)
        row += 1
    Loop
    GoExcel.Close()
    Return cellValues
End Function


Upravil Navara - 20.srp.2019 v 11:54
Zpět nahoru
michalkopriva Zobrazit panel
Diskutér
Diskutér

Přihlášen: 29.čer.2017
Lokalita: ČR (Pha)
Používám:
Inventor Pro 2018
Stav: Offline
Bodů: 27
Přímý odkaz na tuto zprávu Zasláno: 20.srp.2019 v 15:39
Super, moc děkuji za řešení.

Jen tedy nevím, jak vytvořím AddIn. Jako makro mi to v Inventoru nefunguje :-/
Zpět nahoru
Navara Zobrazit panel
Arkance Systems support
Arkance Systems support
Avatar
Arkance Systems

Přihlášen: 08.zář.2008
Lokalita: ČR (Pha)
Používám:
Inventor
Stav: Offline
Bodů: 1636
Přímý odkaz na tuto zprávu Zasláno: 20.srp.2019 v 21:19
Jak psát addin je trochu na delší povídání/psaní Smile
Nicméně jako makro to funguje. Jenom je potřeba mít vytvořený zdrojový soubor "C:\Temp\PartsForDxf.xlsx" a v něm na listu "List1" ve sloupci "A" seznam těch názvů souborů.
 
Samozřejmě tohle není kompletní řešení, ale jenom první návrh a ukázka jak otevírat, exportovat a zavírat soubory definované v excelovské tabulce pomocí iLogicu.
 
Zpět nahoru
michalkopriva Zobrazit panel
Diskutér
Diskutér

Přihlášen: 29.čer.2017
Lokalita: ČR (Pha)
Používám:
Inventor Pro 2018
Stav: Offline
Bodů: 27
Přímý odkaz na tuto zprávu Zasláno: 21.srp.2019 v 08:40
To chápu :-)
Budu si muset v práci vydupat nějaké školení.... LOL

Stále se mi to jako makro nedaří zprovoznit. Mám s tím problém ve VBA Editoru :-/
Zdrojový soubor jsem si změnil, názvy souborů ve sloupci "A" mám.


Připojené náhledyPřihlaste se pro zobrazení plné verze - 78760/VBA-Editor.JPG


Zpět nahoru
Navara Zobrazit panel
Arkance Systems support
Arkance Systems support
Avatar
Arkance Systems

Přihlášen: 08.zář.2008
Lokalita: ČR (Pha)
Používám:
Inventor
Stav: Offline
Bodů: 1636
Přímý odkaz na tuto zprávu Zasláno: 21.srp.2019 v 09:09
Ten kód je v iLogicu, ne ve VBA. Tam by to bylo podstatně horší, až neřešitelné. Už jenom to čtení z excelu by byl docela ořech.
 
Takže spusťte to jako pravidlo iLogic a bude to chodit. Smile
 
Zpět nahoru
michalkopriva Zobrazit panel
Diskutér
Diskutér

Přihlášen: 29.čer.2017
Lokalita: ČR (Pha)
Používám:
Inventor Pro 2018
Stav: Offline
Bodů: 27
Přímý odkaz na tuto zprávu Zasláno: 21.srp.2019 v 11:18
Aha, no tak trochu jsem to tušil, ale zmátlo mě jak jsme se bavili o makru :-D
Nevím, proč jsem to nevyzkoušel :-D

Paráda, funguje to :-)
Jen to tedy nenajde žádný model :-/
Jakou cestu k modelům nastavit, když používáme BlueCielo - Meridian?

Připojené náhledyPřihlaste se pro zobrazení plné verze - 78760/umisteni-ipt.JPG




Připojené náhledyPřihlaste se pro zobrazení plné verze - 78760/inventor-bluecielo.JPG


Zpět nahoru
Navara Zobrazit panel
Arkance Systems support
Arkance Systems support
Avatar
Arkance Systems

Přihlášen: 08.zář.2008
Lokalita: ČR (Pha)
Používám:
Inventor
Stav: Offline
Bodů: 1636
Přímý odkaz na tuto zprávu Zasláno: 21.srp.2019 v 14:55
To už je věc implementace. Já nevím, kam se ty soubory stahujou, ale aby tohle makro fungovalo, tak to musí být někde na lokálním disku. Čekal bych, že budou někde v pracovním adresáři Inventoru.
Pokud nevíte, jestli jsou na disku a chcete je stahovat z Meridianu, tak to se musíte obrátit na ně. V tom už vám nepomůžu.
Zpět nahoru
michalkopriva Zobrazit panel
Diskutér
Diskutér

Přihlášen: 29.čer.2017
Lokalita: ČR (Pha)
Používám:
Inventor Pro 2018
Stav: Offline
Bodů: 27
Přímý odkaz na tuto zprávu Zasláno: 21.srp.2019 v 15:15
Dobře, myslel jsem jestli není nějaká možnost, jak inventoru říct, že to má hledat v Meridianu.
Pokusím se to zjistit u nich.

Jinak tedy u modelů co jsou na disku to funguje.
Jen když to exportuje dxf, tak ho to nepojmenuje dle modelu ze kterého se exportuje...
Název exportovaného dxf je prázdný.

Sub Main()
    Dim excelFile As String = "C:\Users\czmiko4\Desktop\Test-excel-export\Test.xlsx"
    Dim excelSheet As String = "List1"
    Dim dataFromExcel = ReadDataFromExcel(excelFile, excelSheet)
    Dim fileNames = CreateFileNames(dataFromExcel)
    For Each fileName As String In fileNames
        'Check file exists
        If Not System.IO.File.Exists(fileName) Then
            MsgBox ("File not found" & vbCrLf & fileName)
            Continue For
        End If
        'Open file
        Dim partDocument As PartDocument = ThisApplication.Documents.Open(fileName)
        'Export to DXF
        ExportToDxf (partDocument)
        'Close without changes
        partDocument.Close (True)
    Next
End Sub
Private Sub ExportToDxf(partDocument As partDocument)
    'Implement your export to DXF here
    Dim FilePath As String
    FilePath = "C:\Users\czmiko4\Desktop\Test-excel-export\"                                     
    
    If ThisApplication.ActiveDocument.ComponentDefinition.HasFlatPattern = False Then                   
       ThisApplication.ActiveDocument.ComponentDefinition.Unfold                                        
    Else
       ThisApplication.ActiveDocument.ComponentDefinition.FlatPattern.Delete                            
       ThisApplication.ActiveDocument.ComponentDefinition.Unfold                                        
    End If

    Dim fSett As String
    fSett = "FLAT PATTERN DXF?AcadVersion=2000&OuterProfileLayer=IV_INTERIOR_PROFILES"                  
    
    Dim fSname As String
    fSname = FilePath & ThisDoc.FileName(False) & ".dxf"                                                
    
    ThisApplication.ActiveDocument.ComponentDefinition.DataIO.WriteDataToFile( fSett, fSname)          
    'MessageBox.Show("DXF uložen jako: " & fSname ,"Uložení DXF rozvinu", MessageBoxButtons.OK)          
    
ThisApplication.ActiveDocument.ComponentDefinition.FlatPattern.ExitEdit
'    MsgBox(String.Format("Exporting to dxf...{1}{0}", partDocument.FullFileName, vbCrLf))
End Sub
Private Function CreateFileNames(dataFromExcel As List(Of String)) As List(Of String)
    Dim fileNames As New List(Of String)
    For Each fileName As String In dataFromExcel
        fileNames.Add(String.Format("C:\Users\czmiko4\Desktop\Test-excel-export\{0}.ipt", fileName))
    Next
    Return fileNames
End Function
Private Function ReadDataFromExcel(excelFile As String, excelSheet As String) As List(Of String)
    Dim cellValues As New List(Of String)
    Dim column As String = "A"
    Dim row As Integer = 1
    GoExcel.Open(excelFile, excelSheet)
    Do
        Dim cellAddress As String = String.Format("{0}{1}", column, row)
        Dim cellValue = GoExcel.CellValue(cellAddress)
        If (cellValue Is Nothing OrElse cellValue.ToString() = "") Then
            Exit Do
        End If
        cellValues.Add (cellValue)
        row += 1
    Loop
    GoExcel.Close()
    Return cellValues
End Function

Zpět nahoru
Navara Zobrazit panel
Arkance Systems support
Arkance Systems support
Avatar
Arkance Systems

Přihlášen: 08.zář.2008
Lokalita: ČR (Pha)
Používám:
Inventor
Stav: Offline
Bodů: 1636
Přímý odkaz na tuto zprávu Zasláno: 26.srp.2019 v 10:37
Problém je v tom, že při vytváření jména souboru používáte ThisDoc, což není v daném přípapadě možné.
Dim fSname As String
    fSname = FilePath & ThisDoc.FileName(False) & ".dxf"

Je potřeba vycházet z argumentu partDocument
Např.:
Dim fName = System.IO.Path.ChangeExtension(partDocument.FullFileName, ".dxf")
MsgBox(fName)

Dále je potřeba se v této metodě vyvarovat používání ThisApplication.ActiveDocument. To nemusí skončit dobře.


Upravil Navara - 26.srp.2019 v 10:45
Zpět nahoru

Pro technickou podporu CAD
kontaktujte Helpdesk

Příbuzné CAD tipy:
Tip 5975:Export rozvinu plechových součástí Inventoru pro CNC stroje.
Tip 11465:VIPAutomatizace publikování PDF z Inventoru (nastavení, složka, ivlastnosti)
Tip 13165:Jak převést průmět 3D modelu do 2D výkresu DXF?
Tip 9641:Export rozvinu z Inventoru do formátu DXF.
Tip 12423:Chyba syntaxe nebo předčasný konec souboru při načítání DXF.
Tip 3774:VIPChyba 'OCTREE 2' při načítání DXF (řešení).


 Odpovědět Odpovědět

Přejít na fórum Oprávnění fóra Zobrazit panel



Stránka byla vygenerována za 1,512 sekund.