Community
Inventor Programming - iLogic, Macros, AddIns & Apprentice
Inventor iLogic, Macros, AddIns & Apprentice Forum. Share your knowledge, ask questions, and explore popular Inventor topics related to programming, creating add-ins, macros, working with the API or creating iLogic tools.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Changing Circular Pattern Orientation with iLogic

11 REPLIES 11
SOLVED
Reply
Message 1 of 12
josephcooley
1549 Views, 11 Replies

Changing Circular Pattern Orientation with iLogic

Does anyone know if there is a way to change the Orientation of a circular pattern with iLogic?

Tags (1)
11 REPLIES 11
Message 2 of 12

Hi josephcooley, 

Here is a quick example (see the attached file also).

 

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

 

app = ThisApplication

'flip rectangular pattern direction
if Feature.InventorFeature("Rectangular Pattern1").NaturalXDirection  = True then
Feature.InventorFeature("Rectangular Pattern1").NaturalXDirection  = False
Else Feature.InventorFeature("Rectangular Pattern1").NaturalXDirection  = True
End if

'flip circular pattern direction
if Feature.InventorFeature("Circular Pattern1").NaturalAxisDirection  = True then
Feature.InventorFeature("Circular Pattern1").NaturalAxisDirection  = False
Else Feature.InventorFeature("Circular Pattern1").NaturalAxisDirection  = True
End if

 

 

Message 3 of 12

Hi Long time no post but it looks like something has stopped working with this rule in the new release for some reason.

 

SyntaxEditor Code Snippet

app = ThisApplication

If Orientation="CW" Then
Feature.InventorFeature("NubPattern").NaturalAxisDirection = True 'flip circular pattern direction
	
Else If Orientation="CCW" 
Feature.InventorFeature("Pattern").NaturalAxisDirection = False 'flip circular pattern direction

End If

 
Its giving me this Error Message

Error in rule: Orientation, in document: Headcell3DesignTool.ipt

Unspecified error (Exception from HRESULT: 0x80004005 (E_FAIL))

 

And this is on the More Info Tab

System.Runtime.InteropServices.COMException (0x80004005): Unspecified error (Exception from HRESULT: 0x80004005 (E_FAIL))
at Microsoft.VisualBasic.CompilerServices.LateBinding.InternalLateSet(Object o, Type& objType, String name, Object[] args, String[] paramnames, Boolean OptimisticSet, CallType UseCallType)
at Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateSet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean OptimisticSet, Boolean RValueBase, CallType CallType)
at LmiRuleScript.Main()
at Autodesk.iLogic.Exec.AppDomExec.ExecRuleInAssembly(Assembly assem)
at iLogic.RuleEvalContainer.ExecRuleEval(String execRule)

 

Any idea why this rule would have stopped working suddenly with the new release, or if there is a new syntax that needs to be used in Inventor 2018?

Message 4 of 12

How would I do this same thing for an assembly?  For a circular pattern with parts instead of features.

Message 5 of 12

@josephcooley,

 

Try below iLogic code to change orientation of circular pattern.

 

For Part Document:

Dim doc = ThisDoc.Document

Dim oDef As PartComponentDefinition
oDef = doc.ComponentDefinition

If oDef.Features.CircularPatternFeatures.Item("Circular Pattern1").NaturalAxisDirection = False Then
	oDef.Features.CircularPatternFeatures.Item("Circular Pattern1").NaturalAxisDirection = True
Else
	oDef.Features.CircularPatternFeatures.Item("Circular Pattern1").NaturalAxisDirection = False
End If

For Assembly Document:

Dim oDoc = ThisDoc.Document

Dim oDef As AssemblyComponentDefinition
oDef = oDoc.ComponentDefinition

Dim oPattern As CircularOccurrencePattern
oPattern = oDef.OccurrencePatterns.Item("Component Pattern 1:1")

If oPattern.AxisEntityNaturalDirection = True Then
	oPattern.AxisEntityNaturalDirection = False 
Else
	oPattern.AxisEntityNaturalDirection = True 
End If

Please feel free to contact if there is any queries.

 

If solves problem, click on "Accept as solution" / give a "Kudo".

 

Thanks and regards,


CHANDRA SHEKAR G
Developer Advocate
Autodesk Developer Network



Message 6 of 12

This worked for one assembly but I have a circular pattern nested within a linear pattern in another assembly and its not working correctly. its giving me this message below:

 

Error Message:

Error in rule: Orientation, in document: Tray Stack, Bottom_HC3.iam

The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))

 

More Info

System.ArgumentException: The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))
at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
at Inventor.OccurrencePatterns.get_Item(Object Index)
at LmiRuleScript.Main()
at Autodesk.iLogic.Exec.AppDomExec.ExecRuleInAssembly(Assembly assem)
at iLogic.RuleEvalContainer.ExecRuleEval(String execRule)

 

I have attached a screenshot of the model tree structure.  The "rotational pattern" is the one I want to switch within the "Linear Pattern"


Here is the code:

 

SyntaxEditor Code Snippet

trigger = OrientationNumeric

Dim oDoc = ThisDoc.Document

Dim oDef As AssemblyComponentDefinition
oDef = oDoc.ComponentDefinition

Dim oPattern As CircularOccurrencePattern
oPattern = oDef.OccurrencePatterns.Item("Rotational Pattern")

If OrientationNumeric = 0 Then
	oPattern.AxisEntityNaturalDirection = False 
Else
	oPattern.AxisEntityNaturalDirection = True 
End If


Message 7 of 12

@josephcooley,

 

Unfortunately, nested CircularOccurrencePattern is unable to list in OccurrencePatterns Object. So, a change request (INVGEN - 13017) is raised on this.

 

Thanks and regards,


CHANDRA SHEKAR G
Developer Advocate
Autodesk Developer Network



Message 8 of 12

@josephcooley,

 

For nested circular pattern, needs some changes in iLogic code. Try the below iLogic code.

 

Sub Main()
    Dim oDoc As AssemblyDocument
    oDoc = ThisApplication.ActiveDocument
    
    Dim oDef As AssemblyComponentDefinition
    oDef = oDoc.ComponentDefinition
    
    Dim oTopPattern As OccurrencePattern
    oTopPattern = oDef.OccurrencePatterns(1)
    
    Dim oPatternElement As OccurrencePatternElement
    oPatternElement = oTopPattern.OccurrencePatternElements(1)
    
    Dim oSubPattern As OccurrencePattern
    oSubPattern = oPatternElement.Components(1)
	
	If oSubPattern.AxisEntityNaturalDirection = True Then
		oSubPattern.AxisEntityNaturalDirection = False 
	Else
		oSubPattern.AxisEntityNaturalDirection = True 
	End If
    
End Sub

Please feel free to contact if there is any queries.

 

If solves problem, click on "accept as solution" / give a "Kudo".

 

Thanks and regards,


CHANDRA SHEKAR G
Developer Advocate
Autodesk Developer Network



Message 9 of 12

That worked Perfectly Thank you!

Message 10 of 12

@chandra.shekar.g

 

Looks like I spoke too soon.  It triggers fine when I run the rule exclusively when that assembly is open.  However that assembly is in another top level assembly.  I have it set to trigger the rule before save.

here is the code text:

 

SyntaxEditor Code Snippet

Sub Main()
    Dim oDoc As AssemblyDocument
    oDoc = ThisApplication.ActiveDocument
    
    Dim oDef As AssemblyComponentDefinition
    oDef = oDoc.ComponentDefinition
    
    Dim oTopPattern As OccurrencePattern
    oTopPattern = oDef.OccurrencePatterns(1)
    
    Dim oPatternElement As OccurrencePatternElement
    oPatternElement = oTopPattern.OccurrencePatternElements(1)
    
    Dim oSubPattern As OccurrencePattern
    oSubPattern = oPatternElement.Components(1)
	
	If OrientationNumeric = 0 Then
		oSubPattern.AxisEntityNaturalDirection = False
	Else
		oSubPattern.AxisEntityNaturalDirection = True
	End If
    
End Sub

 

The problem is that I want it to run when I save the Top level asembly each sub assmebly that the above rule is in gives me this:

 

ERROR MESSAGE:

Error in rule: Orientation, in document: Tray Stack, Bottom_HC3.iam

Unable to cast COM object of type 'System.__ComObject' to interface type 'Inventor.OccurrencePattern'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{09A5CE88-D529-499E-82EF-246D8DC4F5B3}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

 

MORE INFO:

System.InvalidCastException: Unable to cast COM object of type 'System.__ComObject' to interface type 'Inventor.OccurrencePattern'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{09A5CE88-D529-499E-82EF-246D8DC4F5B3}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
at LmiRuleScript.Main()
at Autodesk.iLogic.Exec.AppDomExec.ExecRuleInAssembly(Assembly assem)
at iLogic.RuleEvalContainer.ExecRuleEval(String execRule)

 

Any idea why the rule would run fine when it was executed from the assembly the rule is in, but when its run as a result of the top level assembly being saved trigger an error?

Message 11 of 12

@josephcooley,

 

My apologies for late reply.

 

Try the below iLogic code. oDoc = ThisApplication.ActiveDocument represents top level assembly not sub assembly. Searching for OccurencePattern in main assembly or top level assembly. Instead of this, oDoc = ThisDoc.Document would solve the issue.

 

 

Sub Main()

Dim oDoc As AssemblyDocument
oDoc = ThisDoc.Document

Dim oDef As AssemblyComponentDefinition
oDef = oDoc.ComponentDefinition

Dim oTopPattern As OccurrencePattern
oTopPattern = oDef.OccurrencePatterns(1)

Dim oPatternElement As OccurrencePatternElement
oPatternElement = oTopPattern.OccurrencePatternElements(1)

Dim oSubPattern As OccurrencePattern
oSubPattern = oPatternElement.Components(1)

If OrientationNumeric = 1 Then
oSubPattern.AxisEntityNaturalDirection = True
Else
oSubPattern.AxisEntityNaturalDirection = False
End If

End Sub

Please feel free to contact if there is any queries.

 

 

If solves problem, click on "Accept as solution" / give a "Kudo".

 

Thanks and regards,


CHANDRA SHEKAR G
Developer Advocate
Autodesk Developer Network



Message 12 of 12
jcooley
in reply to: chandra.shekar.g

That was exactly what the problem was.  Thank you again so much.  You really saved me here. Works Flawlessly!

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report