Zobrazit plnou verzi příspěvku: Export IDW do PDF a DXF

patrikuv
02.12.2015, 07:27

Dobrý den, dal jsem dohromady dvě pravidla iLogic - jedno pro export do PDF a druhé pro tisk do DXF. Nejsem programátor, netuším, proč je tam to, či ono, vytvořil jsem to formou pokus omyl (zkopíroval, něco přepsal..). Potřeboval bych ale pomoct tyto pravidla vyladit a dokončit, tak se obracím na zdejší fórum. PDF Jak má fungovat- klasicky nastavení tisku přes Možnosti (tloušťky čar, atd) + uložení PDF do stejného adresáře jako je uložený zdrojový IDW soubor + za název souboru vložit "_revize" mezera Název souboru (z iVlastnosti "Part Title"). Dostal jsem se do fáze kdy mám vše, kromě "vytisknutí" Part Title. A potřeboval bych, aby v případě, že model nemá žádnou revizi, byl název pdf souboru pouze jako Název souboru mezera Part Title. Format:HTML Format
Version:1.0
StartHTML: 165
EndHTML: 24733
StartFragment: 314
EndFragment: 24701
StartSelection: 314
EndSelection: 314

SyntaxEditor Code Snippet'------Začátek iLogic-------
oPath = ThisDoc.Path
oFileName = ThisDoc.FileName(False) 'without extension
oRevNum = iProperties.Value("Project", "Revision Number")
oPDFAddIn = ThisApplication.ApplicationAddIns.ItemById _
("{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")
oDocument = ThisApplication.ActiveDocument
oContext = ThisApplication.TransientObjects.CreateTranslationContext
oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism
oOptions = ThisApplication.TransientObjects.CreateNameValueMap
oDataMedium = ThisApplication.TransientObjects.CreateDataMedium

If oPDFAddIn.HasSaveCopyAsOptions(oDataMedium, oContext, oOptions) Then
oOptions.Value("All_Color_AS_Black") = 0
oOptions.Value("Remove_Line_Weights") = 1
oOptions.Value("Vector_Resolution") = 4800
oOptions.Value("Sheet_Range") = Inventor.PrintRangeEnum.kPrintAllSheets
End If

'get PDF target folder path
oFolder = oPath '& "\PDF"
'oFolder = "F:\Sales\Enquiries\2013\" & oPath & "\PDF"

'Check for the PDF folder and create it if it does not exist
If Not System.IO.Directory.Exists(oFolder) Then
System.IO.Directory.CreateDirectory(oFolder)
End If

'Set the PDF target file name
oDataMedium.FileName = oFolder & "\" & oFileName & _
"_" & oRevNum & ".pdf"

oMyFileName = oFolder & "\" & oFileName & " Rev" & oRevNum & ".pdf"

'check to see that the xls file exists
If Dir(oMyFileName) <> "" Then
Overwrite = MessageBox.Show("PDF existuje, přepsat?", "iLogic",MessageBoxButtons.YesNo, _
MessageBoxIcon.Question,MessageBoxDefaultButton.Button1)
If Overwrite = vbNo Then
Return
End If
End If

Try
'Publish document
oPDFAddIn.SaveCopyAs(oDocument, oContext, oOptions, oDataMedium)
Catch
MessageBox.Show("PDF nebylo uloženo, právě se používá jiným uživatelem", "iLogic" & ThisApplication.GeneralOptions.UserName & "!")
End Try

'Show message box
MessageBox.Show("Výkres a PDF uloženo do: " & oFolder & vbLf & vbLf & _
"Název souboru: " & oFilename & " [" & oRevNum & "].pdf", "iLogic",MessageBoxButtons.Ok,MessageBoxIcon.Information, _
MessageBoxDefaultButton.Button1)

'open the folder where the new ffiles are saved
Shell("explorer.exe " & oFolder,vbNormalFocus)

'MessageBox.Show("New Files Created in: " & vbLf & oFolder, "iLogic")

DXFJak má fungovat- při uložení se tiskne DXF spolu s PDF, ukládá se do stejné složky jako zdrojový soubor IDW. Název DXF je "Název souboru_Revize". Verze DXF Autocad 2000.
Format:HTML Format Version:1.0 StartHTML:165 EndHTML:13633 StartFragment:314 EndFragment:13601 StartSelection:314 EndSelection:314

SyntaxEditor Code Snippet' Get the DXF translator Add-In.
Dim DXFAddIn As TranslatorAddIn
DXFAddIn = ThisApplication.ApplicationAddIns.ItemById("{C24E3AC4-122E-11D5-8E91-0010B541CD80}")
'Set a reference to the active document (the document to be published).
Dim oDocument As Document
oDocument = ThisApplication.ActiveDocument
Dim oContext As TranslationContext
oContext = ThisApplication.TransientObjects.CreateTranslationContext
oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism
' Create a NameValueMap object
Dim oOptions As NameValueMap
oOptions = ThisApplication.TransientObjects.CreateNameValueMap
' Create a DataMedium object
Dim oDataMedium As DataMedium
oDataMedium = ThisApplication.TransientObjects.CreateDataMedium
' Check whether the translator has 'SaveCopyAs' options
If DXFAddIn.HasSaveCopyAsOptions(oDocument, oContext, oOptions) Then
Dim strIniFile As String
strIniFile = "C:\temp\dxfout.ini"
' Create the name-value that specifies the ini file to use.
oOptions.Value("Export_Acad_IniFile") = strIniFile
End If
'Set the destination file name
oDataMedium.FileName = ThisDoc.PathAndFileName(False) & "_" & oRevNum & ".dxf" 'same folder, or uncomment:
'oDataMedium.FileName = "C:\myDXFfolder\" & ThisDoc.FileName(False) & ".dxf" 'fixed folder
'Publish document.
DXFAddIn.SaveCopyAs(oDocument, oContext, oOptions, oDataMedium)
'Launch the dxf file in whatever application Windows is set to open this document type with
i = MessageBox.Show("Preview the DXF file?", "Title",MessageBoxButtons.YesNo,MessageBoxIcon.Question)
If i = vbYes Then ThisDoc.Launch(oDataMedium.FileName) Možná se dají obě makra zakomponovat do sebe, něco upravit, smazat, změnit..., proto uvítám jakoukoliv radu či pomoc.Díky!


patrikuv2015-12-02 08:32:14

patrikuv
02.12.2015, 08:49

Ještě upravím požadavek na DXF: potřeboval bych, aby se tiskl soubor jako "Plné měřítko (1:1) - Modelový prostor".