Hi,
i have found the following line of code here. I want to export only Parts from the **** witch are marked as "Normal" in the BOM Structure.
Anyone has a solution?
'define the active document as an assembly file Dim oAsmDoc As AssemblyDocument oAsmDoc = ThisApplication.ActiveDocument oAsmName = ThisDoc.FileName(False) 'without extension If ThisApplication.ActiveDocument.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 STEP file for all components." _ & vbLf & " " _ & vbLf & "Are you sure you want to create STEP Drawings for all of the assembly components?" _ & vbLf & "This could take a while.", "iLogic - Batch Output STEPs ",MessageBoxButtons.YesNo) If RUsure = vbNo Then Return Else End If '- - - - - - - - - - - - -STEP setup - - - - - - - - - - - - oPath = ThisDoc.Path 'get STEP target folder path oFolder = oPath & "\" & oAsmName & " STEP Files" 'Check for the step folder and create it if it does not exist If Not System.IO.Directory.Exists(oFolder) Then System.IO.Directory.CreateDirectory(oFolder) End If '- - - - - - - - - - - - -Assembly - - - - - - - - - - - - ThisDoc.Document.SaveAs(oFolder & "\" & oAsmName &(".stp") , True) '- - - - - - - - - - - - -Components - - - - - - - - - - - - 'look at the files referenced by the assembly Dim oRefDocs As DocumentsEnumerator oRefDocs = oAsmDoc.AllReferencedDocuments Dim oRefDoc As Document 'work the referenced models For Each oRefDoc In oRefDocs ThisDoc.Document.ComponentDefinition.BOMStructure = BOMStructureEnum.kNormalBOMStructure Dim oCurFile As Document oCurFile = ThisApplication.Documents.Open(oRefDoc.FullFileName, True) oCurFileName = oCurFile.FullFileName 'defines backslash As the subdirectory separator 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) If ThisDoc.Document.ComponentDefinition.BOMStructure <> BOMStructureEnum.kPurchasedBOMStructure Then Try oCurFile.SaveAs(oFolder & "\" & ShortName & (".stp") , True) Catch MessageBox.Show("Error processing " & oCurFileName, "ilogic") End Try oCurFile.Close Else oCurFile.Close End If Next '- - - - - - - - - - - - - MessageBox.Show("New Files Created in: " & vbLf & oFolder, "iLogic") 'open the folder where the new files are saved Shell("explorer.exe " & oFolder,vbNormalFocus)
Solved! Go to Solution.
Solved by frederik_vollbrecht. Go to Solution.
Solved by myself:
'define the active document as an assembly file Dim oAsmDoc As AssemblyDocument oAsmDoc = ThisApplication.ActiveDocument oAsmName = ThisDoc.FileName(False) 'without extension If ThisApplication.ActiveDocument.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 STEP file for all components." _ & vbLf & " " _ & vbLf & "Are you sure you want to create STEP Drawings for all of the assembly components?" _ & vbLf & "This could take a while.", "iLogic - Batch Output STEPs ",MessageBoxButtons.YesNo) If RUsure = vbNo Then Return Else End If '- - - - - - - - - - - - -STEP setup - - - - - - - - - - - - oPath = ThisDoc.Path 'get STEP target folder path oFolder = oPath & "\" & oAsmName & " STEP Files" 'Check for the step folder and create it if it does not exist If Not System.IO.Directory.Exists(oFolder) Then System.IO.Directory.CreateDirectory(oFolder) End If '- - - - - - - - - - - - -Assembly Export- - - - - - - - - - - - 'ThisDoc.Document.SaveAs(oFolder & "\" & oAsmName &(".stp") , True) '- - - - - - - - - - - - -Components - - - - - - - - - - - - 'look at the files referenced by the assembly Dim oRefDocs As DocumentsEnumerator oRefDocs = oAsmDoc.AllReferencedDocuments Dim oRefDoc As Document 'work the referenced models For Each oRefDoc In oRefDocs Dim oCurFile As Document oCurFile = ThisApplication.Documents.Open(oRefDoc.FullFileName, True) oCurFileName = oCurFile.FullFileName If oRefDoc.ComponentDefinition.BOMStructure = BOMStructureEnum.kNormalBOMStructure Then 'defines backslash As the subdirectory separator 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) Try oCurFile.SaveAs(oFolder & "\" & ShortName & (".stp") , True) Catch MessageBox.Show("Error processing " & oCurFileName, "ilogic") End Try End If oCurFile.Close Next '- - - - - - - - - - - - - MessageBox.Show("New Files Created in: " & vbLf & oFolder, "iLogic") 'open the folder where the new files are saved Shell("explorer.exe " & oFolder,vbNormalFocus)
I suppose this is simple, but how can I save the .step files as the .ipt part number instead of the file name?
If I can get that changed would be great.
Hey, it works great!
I got a question,
I want to save my .step files as part number as name,
how i have to change the code to do this ?
thanks for any reply 😉
Can't find what you're looking for? Ask the community or share your knowledge.