Multiply dxf filename quantity

Multiply dxf filename quantity

hw.sheldon
Contributor Contributor
715 Views
4 Replies
Message 1 of 5

Multiply dxf filename quantity

hw.sheldon
Contributor
Contributor

Hello all, I am in the midst of setting up a code for my assembly to make dxf's automatically through iLogic. I am new to iLogic, but I did manage to setup and tune the code to how I want it. Now, I would like to 'link' the quantity to the filename. If I select a quantity of 2, the filename should multiply the quantity of the assembly components by 2, and thus produce the filename to the correct quantity needed. Attached is the code I'm using. Thanks in advance!

0 Likes
Accepted solutions (1)
716 Views
4 Replies
Replies (4)
Message 2 of 5

Curtis_Waguespack
Consultant
Consultant
Accepted solution

Hi @hw.sheldon 

 

I think this should work for you.

 

I hope this helps.
Best of luck to you in all of your Inventor pursuits,
Curtis
http://inventortrenches.blogspot.com

 

 

Dim oDoc As AssemblyDocument
oDoc = ThisApplication.ActiveDocument
Dim oAsmDoc As AssemblyDocument
Dim ItemQuantiy As String
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 stored value
ItemQuantity = iProperties.Value("Summary", "Keywords")

ItemQuantity = InputBox("Enter the quantity.", "Quantity", ItemQuantity)
If ItemQuantity = "" Then Return

'store the value
iProperties.Value("Summary", "Keywords") = ItemQuantity

'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 & "\" & "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 sOut As String = "FLAT PATTERN DXF?AcadVersion=2018" & _
			"& RebaseGeometry = True" & _
			"& OuterProfileLayer = 0" & _
			"& OuterProfileLayerColor = 0 ;0 ;0" & _
			"& InteriorProfilesLayer = 0" & _
			"& InteriorProfilesLayerColor = 0 ;0 ;0" & _
			"& InvisibleLayers = IV_ARC_CENTERS ;IV_TANGENT ;IV_ROLL ;" & _
				"IV_ROLL_TANGENT ;IV_ALTREP_BACK ;IV_ALTREP_FRONT ;" & _
				"IV_FEATURE_PROFILES_DOWN ;IV_FEATURE_PROFILES ;" & _
				"IV_TOOL_CENTER_DOWN ;DIGI_MARKER_TOOL_1 ;DIGI_MARKER_TOOL_2 ;" & _
				"IV_BEND ;IV_BEND_DOWN "

			Dim oQty As String = oRow.ItemQuantity
			oQty = oQty * ItemQuantity

			Dim ShortName As String = "Qty-" & oQty & "_" & Left(iDoc.DisplayName, _
				(InStrRev(iDoc.DisplayName, ".", -1, vbTextCompare) -1)) & " .dxf"

			oCD.DataIO.WriteDataToFile(sOut, oFolder & "\" & ShortName)
			oCD.FlatPattern.ExitEdit()
		Catch ex As Exception
			MsgBox(ex.Message)
		End Try
		iDoc.Close(True)
	Catch
	End Try
Next

 

EESignature

0 Likes
Message 3 of 5

hw.sheldon
Contributor
Contributor

Thanks for the help but for some reason the 'invisible' layers showed up on the updated one. But I did some changing around and got it working just perfect. Thanks again for the help, much appreciated. 

0 Likes
Message 4 of 5

karl44GV5
Observer
Observer

Is there a way of bring the material and gauge onto the dxf? 

0 Likes
Message 5 of 5

hw.sheldon
Contributor
Contributor

Yes there is, but I have my material and gauge in my filename, e.g. ST-10g_Filename. I think this forum does what you are looking for..https://forums.autodesk.com/t5/inventor-ilogic-and-vb-net-forum/exporting-a-specific-face-as-dxf-wit...

0 Likes