<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Parts List Column Fitting in Inventor Programming Forum</title>
    <link>https://forums.autodesk.com/t5/inventor-programming-forum/parts-list-column-fitting/m-p/13193162#M3841</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/14267279"&gt;@harvey3ELEA&lt;/a&gt;.&amp;nbsp; Besides what Michael already mentioned, you would likely also want to get rid of all the ProgressBar related stuff, and stuff having to do with multiple sheets, like the sheet count.&amp;nbsp; I have used a different version of this same code based process for years now, but my version does not use multiple specific ratios like yours, because it did not seem to be needed in my drawings.&amp;nbsp; But there are lots of possible differences in drawing styles and fonts being used, which can change how all that stuff works together, so its likely not a 'one size fits all' type situation.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Anyways, I copied your original code, then modified it in several areas, mostly to condense it and make it more efficient.&amp;nbsp; But I left all the mathematical calculations so that they will work exactly the same as before, but will less code and calculations involved.&amp;nbsp; Before it was doing the same calculations twice, but now just once.&amp;nbsp; The original code was also obtaining the columns collection, and the one column in many different places, but now is just obtaining those once, then using that variable for all needs after that point, which will result in less processing.&amp;nbsp; Give this version a try, and see if it works OK for you.&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;Sub Main
	Dim oDDoc As DrawingDocument = TryCast(ThisApplication.ActiveDocument, Inventor.DrawingDocument)
	If oDDoc Is Nothing Then
		MessageBox.Show("Hey the rule only runs in drawing documents!")
		Return
	End If
	For Each oPL As PartsList In oDDoc.ActiveSheet.PartsLists
		'Sort Parts List By:
		oPL.Sort("PART #")
		oPL.Renumber
		'Call Sub	
		PartsListFitColumns(oPL)
	Next
	oDDoc.Update2(True)
End Sub

'Fit columns of parts list
Public Sub PartsListFitColumns(oPList As PartsList)
	If oPList Is Nothing Then Return
	Dim oCols As PartsListColumns = oPList.PartsListColumns
	' get font info	
	Dim dWidth As Double = oPList.DataTextStyle.FontSize * oPList.DataTextStyle.WidthScale
	' find longest string in each column and resize column
	Dim oRow As PartsListRow
	Dim sData As String
	Dim iCol As Integer
	Dim iCols As Integer = oCols.Count
	' Set up array To hold column widths
	Dim iLen() As Integer
	ReDim iLen(iCols)
	' initialize to header lengths
	For iCol = 1 To iCols
		Dim oCol As PartsListColumn = oCols.Item(iCol)
		iLen(iCol) = Len(oCol.Title)
		For Each oRow In oPList.PartsListRows
			If oRow.Visible = True Then
				sData = oRow.Item(iCol).Value ' get the data from the cell	
				If Len(sData) &amp;gt; iLen(iCol) Then
					iLen(iCol) = Len(sData)
				End If
			End If
		Next oRow
		Dim col_l As Double = oCol.Width
		Dim desired_col_l = dWidth * (iLen(iCol) + 2)
		Dim ScaledColW1 As Double = desired_col_l * 0.85
		Dim ScaledColW2 As Double = desired_col_l * 0.8
		Dim ScaledColW3 As Double = desired_col_l * 0.75
		Dim ScaledColW4 As Double = desired_col_l * 0.7
		Dim ScaledColW5 As Double = desired_col_l * 0.62
		'messagebox.Show(iLen(iCol))
		Select Case iLen(iCol)
			Case &amp;lt;= 10
				If col_l &amp;lt;&amp;gt; ScaledColW1 Then oCol.Width = ScaledColW1
			Case 11 To 20
				If col_l &amp;lt;&amp;gt; ScaledColW2 Then oCol.Width = ScaledColW2
			Case 21 To 30
				If col_l &amp;lt;&amp;gt; ScaledColW3 Then oCol.Width = ScaledColW3
			Case 31 To 40
				If col_l &amp;lt;&amp;gt; ScaledColW4 Then oCol.Width = ScaledColW4
			Case &amp;gt;= 41
				If col_l &amp;lt;&amp;gt; ScaledColW5 Then oCol.Width = ScaledColW5
		End Select
	Next iCol
End Sub&lt;/LI-CODE&gt;
&lt;P&gt;If this solved your problem, or answered your question, please click &lt;SPAN&gt;&lt;STRONG&gt; ACCEPT SOLUTION &lt;/STRONG&gt;&lt;/SPAN&gt;.&lt;BR /&gt;Or, if this helped you, please click (LIKE or KUDOS) &lt;span class="lia-unicode-emoji" title=":thumbs_up:"&gt;👍&lt;/span&gt;.&lt;/P&gt;</description>
    <pubDate>Wed, 04 Dec 2024 18:15:07 GMT</pubDate>
    <dc:creator>WCrihfield</dc:creator>
    <dc:date>2024-12-04T18:15:07Z</dc:date>
    <item>
      <title>Parts List Column Fitting</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/parts-list-column-fitting/m-p/13192591#M3839</link>
      <description>&lt;P&gt;I've been using this handy little code (from this forum) for condensing column widths of my various parts lists in my 10-sheet drawing.&amp;nbsp; Code works great as it updates all 10 sheets at one time, but I'm looking to modify the code as to where it will do the column update on the current sheet (of the 10) I'm working on.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm not super skilled at iLogic so I'm not sure which command(s) I would need to change to accomplish the single sheet column update.&amp;nbsp; Suggestions welcomed!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;Sub&lt;/SPAN&gt; &lt;SPAN&gt;Main&lt;/SPAN&gt;()
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Not&lt;/SPAN&gt; &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocument&lt;/SPAN&gt;.&lt;SPAN&gt;DocumentType&lt;/SPAN&gt; = &lt;SPAN&gt;kDrawingDocumentObject&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
		&lt;SPAN&gt;MessageBox&lt;/SPAN&gt;.&lt;SPAN&gt;Show&lt;/SPAN&gt;(&lt;SPAN&gt;"Hey the rule only runs in drawing documents!"&lt;/SPAN&gt;)
		&lt;SPAN&gt;Exit&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;
	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oDrawDoc&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;DrawingDocument&lt;/SPAN&gt;
	&lt;SPAN&gt;oDrawDoc&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;ActiveDocument&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oSheet&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Sheet&lt;/SPAN&gt;
	&lt;SPAN&gt;'Create sheet counter variable&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;iSheetCount&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt;
	&lt;SPAN&gt;iSheetCount&lt;/SPAN&gt; = 0
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oProgressBar&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Inventor&lt;/SPAN&gt;.&lt;SPAN&gt;ProgressBar&lt;/SPAN&gt;

	&lt;SPAN&gt;'Progress bar&lt;/SPAN&gt;
	&lt;SPAN&gt;oMessage&lt;/SPAN&gt; = &lt;SPAN&gt;"Organizing All Parts List"&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;SheetCount&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt;
	&lt;SPAN&gt;SheetCount&lt;/SPAN&gt; = &lt;SPAN&gt;oDrawDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Sheets&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt;
	
	&lt;SPAN&gt;oProgressBar&lt;/SPAN&gt; = &lt;SPAN&gt;ThisApplication&lt;/SPAN&gt;.&lt;SPAN&gt;CreateProgressBar&lt;/SPAN&gt;(&lt;SPAN&gt;False&lt;/SPAN&gt;, &lt;SPAN&gt;SheetCount&lt;/SPAN&gt;, &lt;SPAN&gt;oMessage&lt;/SPAN&gt;, &lt;SPAN&gt;True&lt;/SPAN&gt;) &lt;SPAN&gt;'True = Cancel button&lt;/SPAN&gt;
	
	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oSheet&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oDrawDoc&lt;/SPAN&gt;.&lt;SPAN&gt;Sheets&lt;/SPAN&gt;			
		
		&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oPL&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartsList&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oSheet&lt;/SPAN&gt;.&lt;SPAN&gt;PartsLists&lt;/SPAN&gt;		
			
			&lt;SPAN&gt;'Get the current sheet number&lt;/SPAN&gt;
			&lt;SPAN&gt;iSheetCount&lt;/SPAN&gt; = &lt;SPAN&gt;iSheetCount&lt;/SPAN&gt; + 1
			
			&lt;SPAN&gt;'Update the progress bar to reflect which sheet is being operated on&lt;/SPAN&gt;
			&lt;SPAN&gt;oProgressBar&lt;/SPAN&gt;.&lt;SPAN&gt;Message&lt;/SPAN&gt; = (&lt;SPAN&gt;"Processing Sheet "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;iSheetCount&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;" of "&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;SheetCount&lt;/SPAN&gt; &amp;amp; &lt;SPAN&gt;"..."&lt;/SPAN&gt;)
			&lt;SPAN&gt;oProgressBar&lt;/SPAN&gt;.&lt;SPAN&gt;UpdateProgress&lt;/SPAN&gt;
			
			&lt;SPAN&gt;'Sort Parts List By:&lt;/SPAN&gt;
			&lt;SPAN&gt;oPL&lt;/SPAN&gt;.&lt;SPAN&gt;Sort&lt;/SPAN&gt;(&lt;SPAN&gt;"PART #"&lt;/SPAN&gt;)
			&lt;SPAN&gt;oPL&lt;/SPAN&gt;.&lt;SPAN&gt;Renumber&lt;/SPAN&gt;
				
			&lt;SPAN&gt;'Call Sub	&lt;/SPAN&gt;
			&lt;SPAN&gt;PartsListFitColumns&lt;/SPAN&gt;(&lt;SPAN&gt;oPL&lt;/SPAN&gt;)	
				
		&lt;SPAN&gt;Next&lt;/SPAN&gt;
	
	&lt;SPAN&gt;Next&lt;/SPAN&gt;
	
	&lt;SPAN&gt;oProgressBar&lt;/SPAN&gt;.&lt;SPAN&gt;Close&lt;/SPAN&gt;

&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Sub&lt;/SPAN&gt;

&lt;SPAN&gt;'Fit columns of parts list&lt;/SPAN&gt;
&lt;SPAN&gt;Public&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt; &lt;SPAN&gt;PartsListFitColumns&lt;/SPAN&gt;(&lt;SPAN&gt;oPartsList&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartsList&lt;/SPAN&gt;) &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartsList&lt;/SPAN&gt;
	&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oPartsList&lt;/SPAN&gt; &lt;SPAN&gt;Is&lt;/SPAN&gt; &lt;SPAN&gt;Nothing&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt; &lt;SPAN&gt;Exit&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;
	&lt;SPAN&gt;' get font info	&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;dWidth&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt;
	&lt;SPAN&gt;dWidth&lt;/SPAN&gt; = &lt;SPAN&gt;oPartsList&lt;/SPAN&gt;.&lt;SPAN&gt;DataTextStyle&lt;/SPAN&gt;.&lt;SPAN&gt;FontSize&lt;/SPAN&gt; * &lt;SPAN&gt;oPartsList&lt;/SPAN&gt;.&lt;SPAN&gt;DataTextStyle&lt;/SPAN&gt;.&lt;SPAN&gt;WidthScale&lt;/SPAN&gt;
	&lt;SPAN&gt;' find longest string in each column and resize column&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;oRow&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;PartsListRow&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;sData&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;String&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;iCol&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;iCols&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt;
	&lt;SPAN&gt;iCols&lt;/SPAN&gt; = &lt;SPAN&gt;oPartsList&lt;/SPAN&gt;.&lt;SPAN&gt;PartsListColumns&lt;/SPAN&gt;.&lt;SPAN&gt;Count&lt;/SPAN&gt;
	&lt;SPAN&gt;' Set up array To hold column widths&lt;/SPAN&gt;
	&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;iLen&lt;/SPAN&gt;() &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Integer&lt;/SPAN&gt;
	&lt;SPAN&gt;ReDim&lt;/SPAN&gt; &lt;SPAN&gt;iLen&lt;/SPAN&gt;(&lt;SPAN&gt;iCols&lt;/SPAN&gt;)
	
	&lt;SPAN&gt;' initialize to header lengths&lt;/SPAN&gt;
	&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;iCol&lt;/SPAN&gt; = 1 &lt;SPAN&gt;To&lt;/SPAN&gt; &lt;SPAN&gt;iCols&lt;/SPAN&gt;
		&lt;SPAN&gt;iLen&lt;/SPAN&gt;(&lt;SPAN&gt;iCol&lt;/SPAN&gt;) = &lt;SPAN&gt;Len&lt;/SPAN&gt;(&lt;SPAN&gt;oPartsList&lt;/SPAN&gt;.&lt;SPAN&gt;PartsListColumns&lt;/SPAN&gt;(&lt;SPAN&gt;iCol&lt;/SPAN&gt;).&lt;SPAN&gt;Title&lt;/SPAN&gt;)
		&lt;SPAN&gt;For&lt;/SPAN&gt; &lt;SPAN&gt;Each&lt;/SPAN&gt; &lt;SPAN&gt;oRow&lt;/SPAN&gt; &lt;SPAN&gt;In&lt;/SPAN&gt; &lt;SPAN&gt;oPartsList&lt;/SPAN&gt;.&lt;SPAN&gt;PartsListRows&lt;/SPAN&gt;
			&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;oRow&lt;/SPAN&gt;.&lt;SPAN&gt;Visible&lt;/SPAN&gt; = &lt;SPAN&gt;True&lt;/SPAN&gt; &lt;SPAN&gt;Then&lt;/SPAN&gt;
					&lt;SPAN&gt;sData&lt;/SPAN&gt; = &lt;SPAN&gt;oRow&lt;/SPAN&gt;.&lt;SPAN&gt;Item&lt;/SPAN&gt;(&lt;SPAN&gt;iCol&lt;/SPAN&gt;).&lt;SPAN&gt;Value&lt;/SPAN&gt; &lt;SPAN&gt;' get the data from the cell	&lt;/SPAN&gt;
					&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;Len&lt;/SPAN&gt;(&lt;SPAN&gt;sData&lt;/SPAN&gt;) &amp;gt; &lt;SPAN&gt;iLen&lt;/SPAN&gt;(&lt;SPAN&gt;iCol&lt;/SPAN&gt;) &lt;SPAN&gt;Then&lt;/SPAN&gt;
						&lt;SPAN&gt;iLen&lt;/SPAN&gt;(&lt;SPAN&gt;iCol&lt;/SPAN&gt;) = &lt;SPAN&gt;Len&lt;/SPAN&gt;(&lt;SPAN&gt;sData&lt;/SPAN&gt;)
					&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
			&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
		&lt;SPAN&gt;Next&lt;/SPAN&gt; &lt;SPAN&gt;oRow&lt;/SPAN&gt;
		
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;col_l&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = &lt;SPAN&gt;oPartsList&lt;/SPAN&gt;.&lt;SPAN&gt;PartsListColumns&lt;/SPAN&gt;(&lt;SPAN&gt;iCol&lt;/SPAN&gt;).&lt;SPAN&gt;Width&lt;/SPAN&gt;
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;desired_col_l&lt;/SPAN&gt; = &lt;SPAN&gt;dWidth&lt;/SPAN&gt; * (&lt;SPAN&gt;iLen&lt;/SPAN&gt;(&lt;SPAN&gt;iCol&lt;/SPAN&gt;) + 2)
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;ratio1&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = 0.85
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;ratio2&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = 0.8
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;ratio3&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = 0.75
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;ratio4&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = 0.7
		&lt;SPAN&gt;Dim&lt;/SPAN&gt; &lt;SPAN&gt;ratio5&lt;/SPAN&gt; &lt;SPAN&gt;As&lt;/SPAN&gt; &lt;SPAN&gt;Double&lt;/SPAN&gt; = 0.62
		
		&lt;SPAN&gt;'messagebox.Show(iLen(iCol))&lt;/SPAN&gt;
		
		&lt;SPAN&gt;Select&lt;/SPAN&gt; &lt;SPAN&gt;Case&lt;/SPAN&gt; &lt;SPAN&gt;iLen&lt;/SPAN&gt;(&lt;SPAN&gt;iCol&lt;/SPAN&gt;)
			&lt;SPAN&gt;Case&lt;/SPAN&gt; &amp;lt;= 10
				&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;col_l&lt;/SPAN&gt; &amp;lt;&amp;gt; &lt;SPAN&gt;desired_col_l&lt;/SPAN&gt; * &lt;SPAN&gt;ratio1&lt;/SPAN&gt;  &lt;SPAN&gt;Then&lt;/SPAN&gt;
	            	&lt;SPAN&gt;oPartsList&lt;/SPAN&gt;.&lt;SPAN&gt;PartsListColumns&lt;/SPAN&gt;(&lt;SPAN&gt;iCol&lt;/SPAN&gt;).&lt;SPAN&gt;Width&lt;/SPAN&gt; = &lt;SPAN&gt;desired_col_l&lt;/SPAN&gt; * &lt;SPAN&gt;ratio1&lt;/SPAN&gt;
	        	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
			&lt;SPAN&gt;Case&lt;/SPAN&gt; 11 &lt;SPAN&gt;To&lt;/SPAN&gt; 20
				&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;col_l&lt;/SPAN&gt; &amp;lt;&amp;gt; &lt;SPAN&gt;desired_col_l&lt;/SPAN&gt; * &lt;SPAN&gt;ratio2&lt;/SPAN&gt;  &lt;SPAN&gt;Then&lt;/SPAN&gt;
	            	&lt;SPAN&gt;oPartsList&lt;/SPAN&gt;.&lt;SPAN&gt;PartsListColumns&lt;/SPAN&gt;(&lt;SPAN&gt;iCol&lt;/SPAN&gt;).&lt;SPAN&gt;Width&lt;/SPAN&gt; = &lt;SPAN&gt;desired_col_l&lt;/SPAN&gt; * &lt;SPAN&gt;ratio2&lt;/SPAN&gt;
	        	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
			&lt;SPAN&gt;Case&lt;/SPAN&gt; 21 &lt;SPAN&gt;To&lt;/SPAN&gt; 30
				&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;col_l&lt;/SPAN&gt; &amp;lt;&amp;gt; &lt;SPAN&gt;desired_col_l&lt;/SPAN&gt; * &lt;SPAN&gt;ratio3&lt;/SPAN&gt;  &lt;SPAN&gt;Then&lt;/SPAN&gt;
	            	&lt;SPAN&gt;oPartsList&lt;/SPAN&gt;.&lt;SPAN&gt;PartsListColumns&lt;/SPAN&gt;(&lt;SPAN&gt;iCol&lt;/SPAN&gt;).&lt;SPAN&gt;Width&lt;/SPAN&gt; = &lt;SPAN&gt;desired_col_l&lt;/SPAN&gt; * &lt;SPAN&gt;ratio3&lt;/SPAN&gt;
	        	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
			&lt;SPAN&gt;Case&lt;/SPAN&gt; 31 &lt;SPAN&gt;To&lt;/SPAN&gt; 40
				&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;col_l&lt;/SPAN&gt; &amp;lt;&amp;gt; &lt;SPAN&gt;desired_col_l&lt;/SPAN&gt; * &lt;SPAN&gt;ratio4&lt;/SPAN&gt;  &lt;SPAN&gt;Then&lt;/SPAN&gt;
	            	&lt;SPAN&gt;oPartsList&lt;/SPAN&gt;.&lt;SPAN&gt;PartsListColumns&lt;/SPAN&gt;(&lt;SPAN&gt;iCol&lt;/SPAN&gt;).&lt;SPAN&gt;Width&lt;/SPAN&gt; = &lt;SPAN&gt;desired_col_l&lt;/SPAN&gt; * &lt;SPAN&gt;ratio4&lt;/SPAN&gt;
	        	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
			&lt;SPAN&gt;Case&lt;/SPAN&gt; &amp;gt;= 41
				&lt;SPAN&gt;If&lt;/SPAN&gt; &lt;SPAN&gt;col_l&lt;/SPAN&gt; &amp;lt;&amp;gt; &lt;SPAN&gt;desired_col_l&lt;/SPAN&gt; * &lt;SPAN&gt;ratio5&lt;/SPAN&gt;  &lt;SPAN&gt;Then&lt;/SPAN&gt;
	            	&lt;SPAN&gt;oPartsList&lt;/SPAN&gt;.&lt;SPAN&gt;PartsListColumns&lt;/SPAN&gt;(&lt;SPAN&gt;iCol&lt;/SPAN&gt;).&lt;SPAN&gt;Width&lt;/SPAN&gt; = &lt;SPAN&gt;desired_col_l&lt;/SPAN&gt; * &lt;SPAN&gt;ratio5&lt;/SPAN&gt;
	        	&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;If&lt;/SPAN&gt;
			
		&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Select&lt;/SPAN&gt;		
		
	&lt;SPAN&gt;Next&lt;/SPAN&gt; &lt;SPAN&gt;iCol&lt;/SPAN&gt;	
	
	&lt;SPAN&gt;Return&lt;/SPAN&gt; &lt;SPAN&gt;oPartsList&lt;/SPAN&gt;
&lt;SPAN&gt;End&lt;/SPAN&gt; &lt;SPAN&gt;Function&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 04 Dec 2024 14:27:24 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/parts-list-column-fitting/m-p/13192591#M3839</guid>
      <dc:creator>harvey3ELEA</dc:creator>
      <dc:date>2024-12-04T14:27:24Z</dc:date>
    </item>
    <item>
      <title>Re: Parts List Column Fitting</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/parts-list-column-fitting/m-p/13192634#M3840</link>
      <description>&lt;P&gt;This is modification of relevant part - NOT TESTED!!!&lt;/P&gt;&lt;LI-CODE lang="visual-basic"&gt;	'For Each oSheet In oDrawDoc.Sheets  'Comment out	
	Dim oSheet = oDrawDoc.ActiveSheet 'Add	
		For Each oPL As PartsList In oSheet.PartsLists		
			
			'Get the current sheet number
			' .... Keep unchanged	
				
		Next
	
	' Next 'Comment out&lt;/LI-CODE&gt;</description>
      <pubDate>Wed, 04 Dec 2024 14:41:46 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/parts-list-column-fitting/m-p/13192634#M3840</guid>
      <dc:creator>Michael.Navara</dc:creator>
      <dc:date>2024-12-04T14:41:46Z</dc:date>
    </item>
    <item>
      <title>Re: Parts List Column Fitting</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/parts-list-column-fitting/m-p/13193162#M3841</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/14267279"&gt;@harvey3ELEA&lt;/a&gt;.&amp;nbsp; Besides what Michael already mentioned, you would likely also want to get rid of all the ProgressBar related stuff, and stuff having to do with multiple sheets, like the sheet count.&amp;nbsp; I have used a different version of this same code based process for years now, but my version does not use multiple specific ratios like yours, because it did not seem to be needed in my drawings.&amp;nbsp; But there are lots of possible differences in drawing styles and fonts being used, which can change how all that stuff works together, so its likely not a 'one size fits all' type situation.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Anyways, I copied your original code, then modified it in several areas, mostly to condense it and make it more efficient.&amp;nbsp; But I left all the mathematical calculations so that they will work exactly the same as before, but will less code and calculations involved.&amp;nbsp; Before it was doing the same calculations twice, but now just once.&amp;nbsp; The original code was also obtaining the columns collection, and the one column in many different places, but now is just obtaining those once, then using that variable for all needs after that point, which will result in less processing.&amp;nbsp; Give this version a try, and see if it works OK for you.&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;Sub Main
	Dim oDDoc As DrawingDocument = TryCast(ThisApplication.ActiveDocument, Inventor.DrawingDocument)
	If oDDoc Is Nothing Then
		MessageBox.Show("Hey the rule only runs in drawing documents!")
		Return
	End If
	For Each oPL As PartsList In oDDoc.ActiveSheet.PartsLists
		'Sort Parts List By:
		oPL.Sort("PART #")
		oPL.Renumber
		'Call Sub	
		PartsListFitColumns(oPL)
	Next
	oDDoc.Update2(True)
End Sub

'Fit columns of parts list
Public Sub PartsListFitColumns(oPList As PartsList)
	If oPList Is Nothing Then Return
	Dim oCols As PartsListColumns = oPList.PartsListColumns
	' get font info	
	Dim dWidth As Double = oPList.DataTextStyle.FontSize * oPList.DataTextStyle.WidthScale
	' find longest string in each column and resize column
	Dim oRow As PartsListRow
	Dim sData As String
	Dim iCol As Integer
	Dim iCols As Integer = oCols.Count
	' Set up array To hold column widths
	Dim iLen() As Integer
	ReDim iLen(iCols)
	' initialize to header lengths
	For iCol = 1 To iCols
		Dim oCol As PartsListColumn = oCols.Item(iCol)
		iLen(iCol) = Len(oCol.Title)
		For Each oRow In oPList.PartsListRows
			If oRow.Visible = True Then
				sData = oRow.Item(iCol).Value ' get the data from the cell	
				If Len(sData) &amp;gt; iLen(iCol) Then
					iLen(iCol) = Len(sData)
				End If
			End If
		Next oRow
		Dim col_l As Double = oCol.Width
		Dim desired_col_l = dWidth * (iLen(iCol) + 2)
		Dim ScaledColW1 As Double = desired_col_l * 0.85
		Dim ScaledColW2 As Double = desired_col_l * 0.8
		Dim ScaledColW3 As Double = desired_col_l * 0.75
		Dim ScaledColW4 As Double = desired_col_l * 0.7
		Dim ScaledColW5 As Double = desired_col_l * 0.62
		'messagebox.Show(iLen(iCol))
		Select Case iLen(iCol)
			Case &amp;lt;= 10
				If col_l &amp;lt;&amp;gt; ScaledColW1 Then oCol.Width = ScaledColW1
			Case 11 To 20
				If col_l &amp;lt;&amp;gt; ScaledColW2 Then oCol.Width = ScaledColW2
			Case 21 To 30
				If col_l &amp;lt;&amp;gt; ScaledColW3 Then oCol.Width = ScaledColW3
			Case 31 To 40
				If col_l &amp;lt;&amp;gt; ScaledColW4 Then oCol.Width = ScaledColW4
			Case &amp;gt;= 41
				If col_l &amp;lt;&amp;gt; ScaledColW5 Then oCol.Width = ScaledColW5
		End Select
	Next iCol
End Sub&lt;/LI-CODE&gt;
&lt;P&gt;If this solved your problem, or answered your question, please click &lt;SPAN&gt;&lt;STRONG&gt; ACCEPT SOLUTION &lt;/STRONG&gt;&lt;/SPAN&gt;.&lt;BR /&gt;Or, if this helped you, please click (LIKE or KUDOS) &lt;span class="lia-unicode-emoji" title=":thumbs_up:"&gt;👍&lt;/span&gt;.&lt;/P&gt;</description>
      <pubDate>Wed, 04 Dec 2024 18:15:07 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/parts-list-column-fitting/m-p/13193162#M3841</guid>
      <dc:creator>WCrihfield</dc:creator>
      <dc:date>2024-12-04T18:15:07Z</dc:date>
    </item>
    <item>
      <title>Re: Parts List Column Fitting</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-forum/parts-list-column-fitting/m-p/13193213#M3842</link>
      <description>&lt;P&gt;Thanks, Wesley.&amp;nbsp; Heading out of the office a bit early, but I will give your code a run tomorrow morning and let you know how it's working.&amp;nbsp; Harvey&lt;/P&gt;</description>
      <pubDate>Wed, 04 Dec 2024 18:49:14 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-forum/parts-list-column-fitting/m-p/13193213#M3842</guid>
      <dc:creator>harvey3ELEA</dc:creator>
      <dc:date>2024-12-04T18:49:14Z</dc:date>
    </item>
  </channel>
</rss>

