Vytisknout stránku | Zavřít okno

export souborů dxf jen u plechových součátí

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=22552
Datum vytištění: 24.čer.2025 v 01:50


Téma: export souborů dxf jen u plechových součátí
Odeslal: carlosiiino
Předmět: export souborů dxf jen u plechových součátí
Datum odeslání: 06.dub.2016 v 13:28
Dobrý den, mám vytvořené pravidlo pro export rozvinů plechových součástí (viz.níže), ale potřebuji do kódu nějak zakombinovat, aby vyhledal jen plechové součásti a ne objemové. Může mi někdo poradit ? Děkuji

SyntaxEditor Code Snippet
Sub Main()   


    Dim sFile As String, sInDir As String, sOutDir As String, I As String

    Dim oDocs As Documents, oDoc As Document

 

    oDocs = ThisApplication.Documents

 

    'Cesta pro otevření a uložení souboru

    sInDir = (ThisDoc.Path & "\")

    sOutDir = (ThisDoc.Path & "\DXF\")

      

    sFile = Dir(sInDir)

      

    While (sFile <> "")

                        

        'Definice formatu souboru pro otevření (IPT, IAM, IDW...)

        If (Right(sFile, 3) = "ipt") Then

            Debug.Print (sFile)

            oDoc = oDocs.Open(sInDir & sFile, False)
            
            ' Vytvořit objekt DataIO

            Dim oDataIO As DataIO

            oDataIO = oDoc.ComponentDefinition.DataIO

            ' Parametry definující formát výstupního souboru DXF

            Dim sParam As String

            sParam = "FLAT PATTERN DXF?AcadVersion=2000"

                  

                  ' Vytvořit výstupní DXF soubor v adresáři

            Dim sDXFFileName As String

            sDXFFileName = (sOutDir & Left(sFile, Len(sFile) - 3) & "DXF")

            MessageBox.Show(sDXFFileName, " CESTA SOUBORU")

            oDataIO.WriteDataToFile (sParam, sDXFFileName)

          End If

 
        sFile = Dir

 

      End While

End Sub 



Odpovědi:
Odeslal: Navara
Datum odeslání: 06.dub.2016 v 14:35
Lze porovnat vlastnost DocumentSubTypeID
 
...
oDoc = oDocs.Open(sInDir & sFile, False)
If oDoc.DocumentSubType.DocumentSubTypeID <> "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}" Then Continue While
 
' Vytvořit objekt DataIO
Dim oDataIO As DataIO
...


Odeslal: carlosiiino
Datum odeslání: 11.dub.2016 v 07:38
Dobrý den,

děkuji za rychlou reakci.

SyntaxEditor Code SnippetMůžete mi prosím ještě poradit, proč mi Inventor po vytvoření posledního dxf zamrzne a nereaguje?
Upravený kód níže.
Děkuji
Sub Main()   


    Dim sFile As String, sInDir As String, sOutDir As String, I As String

    Dim oDocs As Documents, oDoc As Document

 

    oDocs = ThisApplication.Documents

 

    'Cesta pro otevření a uložení souboru

    sInDir = (ThisDoc.Path & "\")

    sOutDir = (ThisDoc.Path & "\DXF\")

      

    sFile = Dir(sInDir)

      

    While (sFile <> "")

                        

        'Definice formatu souboru pro otevření (IPT, IAM, IDW...)

        If (Right(sFile, 3) = "ipt") Then

            Debug.Print (sFile)

            oDoc = oDocs.Open(sInDir & sFile, False)
            If oDoc.DocumentSubType.DocumentSubTypeID <> "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}" Then Continue While
            
            ' Vytvořit objekt DataIO

            Dim oDataIO As DataIO

            oDataIO = oDoc.ComponentDefinition.DataIO

            ' Parametry definující formát výstupního souboru DXF

            Dim sParam As String

            sParam = "FLAT PATTERN DXF?AcadVersion=2000&InvisibleLayers=IV_TANGENT;IV_BEND;IV_BEND_DOWN"

                  

                  ' Vytvořit výstupní DXF soubor v adresáři

            Dim sDXFFileName As String

            sDXFFileName = (sOutDir & Left(sFile, Len(sFile) - 3) & "DXF")

            MessageBox.Show(sDXFFileName, " CESTA SOUBORU")

            oDataIO.WriteDataToFile (sParam, sDXFFileName)

          oDoc.Close(True)
          End If

 
        sFile = Dir

 

      End While

End Sub


Odeslal: Navara
Datum odeslání: 11.dub.2016 v 11:07
Myslím, že to dělá ten cyklus While, kde v případě, že to není plech, nedojde k nastavení na další název souboru a smyčka se zasekne.
Já dávám přednost použití cyklu For Each, kde jako kolekci pro procházení použiju seznam všech souborů v daném adresáři.
 

Dim path = sInDir
Dim files  = IO.Directory.GetFiles(path,"*.ipt", SearchOption.TopDirectoryOnly) 'Or: SearchOption.AllDirectories
For Each file As String In files
    Dim document  = ThisApplication.Documents.Open(file)
    If document.DocumentSubType.DocumentSubTypeID <> "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}" Then
        document.Close()
        Continue For
    End If
    'TODO: Export DXF here
Next
 
 


Odeslal: Navara
Datum odeslání: 11.dub.2016 v 11:17
Teoreticky by se dalo použít něco na tenhle způsob, ale ani Microsoft to nedoporučuje.

While sFile<>""
   dim oDoc = oDocs.Open(sInDir & sFile, False)

    If oDoc.DocumentSubType.DocumentSubTypeID <> "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}" Then
        sFile = Dir()
        Continue While
    End If
    ' Vytvořit objekt DataIO
    Dim oDataIO As DataIO
End While



Vytisknout stránku | Zavřít okno