Parsing the Recent Changes Enum

Parsing the Recent Changes Enum

MechMachineMan
Advisor Advisor
499 Views
1 Reply
Message 1 of 2

Parsing the Recent Changes Enum

MechMachineMan
Advisor
Advisor

I've tried a couple different things but I cant seem to get it to click.

 

What I want to do is use the RecentChanges property of a document to control when I want a global event trigger to proceed.

 

I understand that the RecentChanges returns an enum that is an addition of the children that are flagged, but what I can't currently do is establish out of that value which of the children are flagged on without writing a large tree structure.

 

From the browsing I have done on the msdn site, it looks like enums are set-up to get them to do this for you, in the form of an array, but I can't seem to get it working.

 

ie; if oDoc.RecentChanges returns a value of 145, I want to find the function/method that spits an array out containing only (128, 16, 1) so then I can do an "If array contains 128 OR ARRAY Contains 32"

 

Here is the mishmash of things I have tried so far:

 

Dim oDoc As Document = ThisDoc.Document

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''Below fails because it says RecentChanges is not a collection 'For Each i In oDoc.RecentChanges ' MsgBox(i) 'Next
''''''''''''''''''''''''''''''''''''''''''''''''

''Below simply returns the value of the combined enums; in my test case, this was 145 (which is 128, 16, 1) MsgBox(CStr(oDoc.RecentChanges))


''''''''''''''''''''''''''''''''''''''''''''''''
'Below says that commandtypesenums is not part of ienumerable For Each i In [Enum].Parse(GetType(CommandTypesEnum), oDoc.RecentChanges)
MsgBox(i)
Next
''''''''''''''''''''''''''''''''''''''''''''''''
'Below just lists all possible enums in CommandTypesEnum For Each i In [Enum].GetValues(GetType(CommandTypesEnum)) MsgBox(i) Next

 


--------------------------------------
Did you find this reply helpful ? If so please use the 'Accept as Solution' or 'Like' button below.

Justin K
Inventor 2018.2.3, Build 227 | Excel 2013+ VBA
ERP/CAD Communication | Custom Scripting
Machine Design | Process Optimization


iLogic/Inventor API: Autodesk Online Help | API Shortcut In Google Chrome | iLogic API Documentation
Vb.Net/VBA Programming: MSDN | Stackoverflow | Excel Object Model
Inventor API/VBA/Vb.Net Learning Resources: Forum Thread

Sample Solutions:Debugging in iLogic ( and Batch PDF Export Sample ) | API HasSaveCopyAs Issues |
BOM Export & Column Reorder | Reorient Skewed Part | Add Internal Profile Dogbones |
Run iLogic From VBA | Batch File Renaming| Continuous Pick/Rename Objects

Local Help: %PUBLIC%\Documents\Autodesk\Inventor 2018\Local Help

Ideas: Dockable/Customizable Property Browser | Section Line API/Thread Feature in Assembly/PartsList API Static Cells | Fourth BOM Type
0 Likes
500 Views
1 Reply
Reply (1)
Message 2 of 2

MechMachineMan
Advisor
Advisor

As a temporary solution I just wrote this shoddy function. Which I hate doing; because if there is a native way something can be done, it should be done that way instead of just bringing more redundant code into the world.

 

Sub Main()
	oRecentChanges = ThisDoc.Document.RecentChanges
	
    Dim oChangeList As New List(Of Integer)
	
	MsgBox(CStr(oRecentChanges))
	
    oChangeList = ParseEnum(oRecentChanges)
    
	Call PrintList(oChangeList)
End Sub

Function ParseEnum(oVal As Integer) As Object
    Dim oEnumList As New List(Of Integer)

    For Each i In [Enum].GetValues(GetType(CommandTypesEnum))
        oEnumList.Add(i)
    Next
    
    oEnumList.Sort
    oEnumList.Reverse

    Dim oOutputList As New List(Of Integer)
 
    For Each oItem in oEnumList
        If oVal - oItem > -1 Then
            oVal = oVal - oItem
            oOutputList.Add(oItem)
        End If
    Next
    Return oOutputList
End Function

Sub PrintList(oList As Object)
    For Each oItem in oList
        oStr = oStr & vbLf & oItem
    Next
    MsgBox(oStr)
End Sub

--------------------------------------
Did you find this reply helpful ? If so please use the 'Accept as Solution' or 'Like' button below.

Justin K
Inventor 2018.2.3, Build 227 | Excel 2013+ VBA
ERP/CAD Communication | Custom Scripting
Machine Design | Process Optimization


iLogic/Inventor API: Autodesk Online Help | API Shortcut In Google Chrome | iLogic API Documentation
Vb.Net/VBA Programming: MSDN | Stackoverflow | Excel Object Model
Inventor API/VBA/Vb.Net Learning Resources: Forum Thread

Sample Solutions:Debugging in iLogic ( and Batch PDF Export Sample ) | API HasSaveCopyAs Issues |
BOM Export & Column Reorder | Reorient Skewed Part | Add Internal Profile Dogbones |
Run iLogic From VBA | Batch File Renaming| Continuous Pick/Rename Objects

Local Help: %PUBLIC%\Documents\Autodesk\Inventor 2018\Local Help

Ideas: Dockable/Customizable Property Browser | Section Line API/Thread Feature in Assembly/PartsList API Static Cells | Fourth BOM Type
0 Likes