Zobrazit plnou verzi příspěvku: Hromadný převod do DXF

Adamito
12.10.2012, 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 SubDěkujiAdam Blažek


Adamito
15.10.2012, 14:02


Normal
0
21


false
false
false







MicrosoftInternetExplorer4



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


Navara
15.10.2012, 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... 

Adamito
17.10.2012, 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" _


Navara
17.10.2012, 08:00


Hladiny je potřeba vypnout, ne přejmenovat.sParam = "FLAT PATTERN DXF?AcadVersion=2000&InvisibleLayers=IV_TANGENT;IV_BEND;IV_BEND_DOWN"

Adamito
22.10.2012, 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")


Navara
22.10.2012, 13:40


V iVlastnostech se cesta k souboru nevyskytuje. Je ale možné jí získat z plného názvu souboru
SyntaxEditor Code SnippetDim fileName As String = ThisDoc.Document.FullFileName
Dim fileLocation As String = System.IO.Path.GetDirectoryName(fileName) 
Navara2012-10-22 13:40:42

Adamito
24.10.2012, 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.


Navara
24.10.2012, 12:32


Odpověď je podobná jako v tomto případě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)

hoboj
08.11.2012, 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.

Navara
09.11.2012, 08:08


Formát R14 je povlen pouze pro DXF.

hoboj
09.11.2012, 08:11


a jak by to šlo napsat pro dxf? Prosím

Adamito
09.11.2012, 09:15
Dobrý den,u mě stačilo přepsat 2000 na R14 (respektive R12, R14 nemám podporován)


hoboj
09.11.2012, 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.