Vytisknout stránku | Zavřít okno

Hromadný převod do DXF

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=15848
Datum vytištění: 06.kvě.2026 v 16:39


Téma: Hromadný převod do DXF
Odeslal: Adamito
Předmět: Hromadný převod do DXF
Datum odeslání: 12.říj.2012 v 09:54
Dobrý den,
v současnosti používám kód pro převod plechových součástí do DXF, který je v každé součásti zvlášť. Chtěl bych všechny plechové součásti převést pomocí jednoho pravidla napsaného v sestavě (moje představa je, aby kód vyhledal pouze plechové součásti a ty následně uložil jako DXF). Ještě v kódu potřebuji vypnout některé hladiny.
Tady je kód, který používám.

Public Sub Main()
    ' Získat aktivní dokument, musí to být součást, rozvinutý tvar
    Dim invDoc As Inventor.Document
    invDoc = ThisApplication.ActiveDocument
   
    ' Jméno dokumentu
    Dim sFileName As String
    sFileName = invDoc.DisplayName
    sFileName = Left(sFileName, Len(sFileName) - 1) 'bez .IPT

    ' Vytvořit objekt DataIO
    Dim oDataIO As DataIO
    oDataIO = invDoc.ComponentDefinition.DataIO
 
    ' Parametry definující formát výstupního souboru DWG nebo DXF
    Dim sParam As String
    sParam = "FLAT PATTERN DXF?AcadVersion=2000"
'dostupné formáty: AcadVersion = "2005","2004","2002", "2000", "R14", "R13", "R12" (R12 jen pro DXF)

 
    ' Vytvořit výstupní DWG nebo DXF soubor v adresáři C:\TEMP
    Dim sDXFFileName As String
    sDXFFileName = "c:\temp\" & sFileName & ".dxf"
    oDataIO.WriteDataToFile (sParam, sDXFFileName)
End Sub


Děkuji
Adam Blažek



Odpovědi:
Odeslal: Adamito
Datum odeslání: 15.říj.2012 v 14:02
Vytvořil jsem kód pro hromadné uložení všech souborů do jiného typu, s malou záměnou je funkční pro různé tipy přípon, problém nastane když chci ukládat do dxf. Předpokládám, že je problém v cestě k rozvinu.
Neví někdo co s tím?

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


Odeslal: Navara
Datum odeslání: 15.říj.2012 v 14:37
Problémy jsou tu dva.
1) Adresář pro DXF musí existovat, jinak to skončí s chybou při zápisu do souboru
...
oDataIO.WriteDataToFile (sParam, sDXFFileName)
...
 
2) Pokud není otevíraná součást plech, skončí to s chybou tamtéž.

A jedna poznámka na závěr: Otevřený soubor je po dokončení vhodné zavřít.
 
...
oDoc.Close(true)
End If
...
 


Odeslal: Adamito
Datum odeslání: 17.říj.2012 v 07:40
Děkuji za rady.
Přidal jsem pravidlo pro testování plechu a už to běhá.

Ještě při převodu potřebuji vypnout některé hladiny, cary ohybu a nejak se mi to nedari.
...
sParam = "FLAT PATTERN DXF?AcadVersion=2000"
                + "&TangentLayer=IV_TANGENT" _
                + "&BendLayer=IV_BEND" _





Odeslal: Navara
Datum odeslání: 17.říj.2012 v 08:00
Hladiny je potřeba vypnout, ne přejmenovat.
sParam = "FLAT PATTERN DXF?AcadVersion=2000&InvisibleLayers=IV_TANGENT;IV_BEND;IV_BEND_DOWN"


Odeslal: Adamito
Datum odeslání: 22.říj.2012 v 09:07
Dobrý den,
děkuji za výše uvedené připomínky a chtěl bych se ještě zeptat jestli je možné získat cestu k souboru jako iVlastnost
např. takto: cesta = iProperties.Value("Project", "Location")


Odeslal: Navara
Datum odeslání: 22.říj.2012 v 13:40
V iVlastnostech se cesta k souboru nevyskytuje. Je ale možné jí získat z plného názvu souboru
SyntaxEditor Code Snippet
Dim fileName As String = ThisDoc.Document.FullFileName
Dim fileLocation As String = System.IO.Path.GetDirectoryName(fileName)
 


Odeslal: Adamito
Datum odeslání: 24.říj.2012 v 11:39
Lze toto použít pro získání cesty k jednotlivým souborům v sestavě, přičemž by pravidlo bylo zapsáno pouze v hlavní sestavě?
Momentálně to obcházím přes kusovník, kde získávám cestu k souborům.

Jsou dostupné nějaké návody a popis pro API v češtině.

Děkuji.


Odeslal: Navara
Datum odeslání: 24.říj.2012 v 12:32
Odpověď je podobná jako v tomto případě
http://www.cadforum.cz/forum/forum_posts.asp?TID=15924&PID=73409#73409 - http://www.cadforum.cz/forum/forum_posts.asp?TID=15924&PID=73409#73409
 
Pro API žádné návody ani popisy v češtině nejsou (naštěstí, protože nechci vědět, jak by ty překlady dopadly)


Odeslal: hoboj
Datum odeslání: 08.lis.2012 v 13:43
Chtěl bych se zeptat na řádek, kde se nastavuje objekt DataIO a potom na sParam, jestli by to šlo poupravit pro export výkresu idw na dwg verze R14.
Šlo by to?
 
Mám makro na export idw -> dwg , ale pouze verze 2000 a to bych potřeboval změnit na R14.
 
Děkuji za rady.


-------------
Vojtěch Visingr


Odeslal: Navara
Datum odeslání: 09.lis.2012 v 08:08
Formát R14 je povlen pouze pro DXF.


Odeslal: hoboj
Datum odeslání: 09.lis.2012 v 08:11
a jak by to šlo napsat pro dxf?
Prosím Smile


-------------
Vojtěch Visingr


Odeslal: Adamito
Datum odeslání: 09.lis.2012 v 09:15
Dobrý den,
u mě stačilo přepsat 2000 na R14 (respektive R12, R14 nemám podporován)


Odeslal: hoboj
Datum odeslání: 09.lis.2012 v 09:51
To funguje pro rozvin, já to ale potřebuji pro normální výkres idw bez rozvinu..
 
Na to už mám makro, ale v makru nevím, jak nastavit starší verzi.


-------------
Vojtěch Visingr



Vytisknout stránku | Zavřít okno