Message 1 of 11
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
hello,
i was trying to make a batch export from an open assembly to a folder. The file naming will nog be okay. It is a piece of code from an other forum member. The filename must be the same as the ipt name. for example, S0188.ipt must become a flat pattern S0188.dxf.
Can anyone help me?
Dim oDoc As AssemblyDocument oDoc = ThisApplication.ActiveDocument Dim oAsmDoc As AssemblyDocument oAsmDoc = ThisApplication.ActiveDocument oAsmName = ThisDoc.FileName(False) 'without extension 'Check that the active document is an assembly file If oDoc.DocumentType <> kAssemblyDocumentObject Then MessageBox.Show("Please run this rule from the assembly file.", "iLogic") Exit Sub End If 'Get user input RUsure = MessageBox.Show ( _ "This will create a DXF file for all of the asembly components that are sheet metal." _ & vbLf & "This rule expects that the part file is saved." _ & vbLf & " " _ & vbLf & "Are you sure you want to create DXF for all of the assembly components?" _ & vbLf & "This could take a while.", "iLogic - Batch Output DXFs ", MessageBoxButtons.YesNo) If RUsure <> vbYes Then Exit Sub Dim oPath As String = ThisDoc.Path 'Get the DXF target folder path Dim oFolder As String = oPath & "\" & oAsmName & " DXF Files" 'Check for the DXF folder and create it if it does not exist If Not System.IO.Directory.Exists(oFolder) Then System.IO.Directory.CreateDirectory(oFolder) End If '- - - - - - - - - - - - -Component - - - - - - - - - - - - 'MessageBox.Show("Test", "My iLogic Dialog", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1) Dim oBOM As BOM 'MessageBox.Show("Test", "My iLogic Dialog", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1) oBOM = oDoc.ComponentDefinition.BOM 'MessageBox.Show("Test", "My iLogic Dialog", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1) oBOM.StructuredViewEnabled = True Dim oBOMView As BOMView = oBOM.BOMViews.Item(oBOM.BOMViews.Count) For Each oRow As BOMRow In oBOMView.BOMRows Try Dim oCD As ComponentDefinition = oRow.ComponentDefinitions.Item(1) Dim iDoc As Document = oCD.Document 'SheetMetal parts only If iDoc.SubType <> "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}" Then Continue For Dim iName As String = iDoc.FullFileName 'Check that model is saved If iName = vbNullString Then Continue For iDoc = ThisApplication.Documents.Open(iName) oCD = iDoc.ComponentDefinition Dim oItem As String = oRow.ItemNumber Try If Not oCD.HasFlatPattern Then oCD.Unfold() Else oCD.FlatPattern.Edit() End If Dim oCurFile As Document Dim sOut As String = "FLAT PATTERN DXF?AcadVersion=2004&OuterProfileLayer=IV_OUTER_PROFILE" Dim strCharSep As String = System.IO.Path.DirectorySeparatorChar 'find the postion of the last backslash in the path FNamePos = InStrRev(oCurFileName, "\", -1) 'get the file name with the file extension Name = Right(oCurFileName, Len(oCurFileName) - FNamePos) 'get the file name (without extension) ShortName = Left(Name, Len(Name) - 4) oCD.DataIO.WriteDataToFile(sOut, oFolder & "\" & ShortName & ".dxf") oCD.FlatPattern.ExitEdit() Catch ex As Exception MsgBox(ex.Message) End Try iDoc.Close(True) Catch End Try Next
.
Solved! Go to Solution.