Announcements
Attention for Customers without Multi-Factor Authentication or Single Sign-On - OTP Verification rolls out April 2025. Read all about it here.
c.neutschK4ZB6
336 Views, 3 Replies

internal rule not working as external rule (revisiontables.item)

I got a problem with an external rule. That rule worked fine as internal rule, but now there's a failure at one expression

 

Dim oApp As Application
Dim oDoc As DrawingDocument
Dim oSheet As Sheet
Dim oRevTable As RevisionTable
Dim myPoint As Inventor.Point2d
oApp = ThisApplication
oDoc = ThisDoc.Document
oSheet = oDoc.ActiveSheet
oRevTable = oSheet.RevisionTables.Item(1)

If oSheet.RevisionTables.Count = 0 Then
    MsgBox("There is no RevisionTable on this sheet.")
	Exit Sub
End If

Dim PointX As Double
Dim PointY As Double
Dim SizeX As Double
Dim SizeY As Double

SizeX = oRevTable.RangeBox.MaxPoint.X - oRevTable.RangeBox.MinPoint.X
SizeY = oRevTable.RangeBox.MaxPoint.Y - oRevTable.RangeBox.MinPoint.Y
PointX = PointX-SizeX
PointY = PointY

myPoint = oApp.TransientGeometry.CreatePoint2d(PointX, PointY)
oRevTable.Position = myPoint

 This is the failure text:

 

System.ArgumentException: Falscher Parameter. (Ausnahme von HRESULT: 0x80070057 (E_INVALIDARG))
bei System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
bei Inventor.RevisionTables.get_Item(Object Index)
bei ThisRule.Main()
bei Autodesk.iLogic.Exec.AppDomExec.ExecRuleInAssembly(Assembly assem)
bei iLogic.RuleEvalContainer.ExecRuleEval(String execRule)

theo.bot
in reply to: c.neutschK4ZB6

place this line after the check if there is a revision table. 

 

oRevTable = oSheet.RevisionTables.Item(1) 

 

Hi @c.neutschK4ZB6 

 

In addition to the previous suggestion you could use a Try/Catch statement here.

 

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

 

Dim oApp As Application
Dim oDoc As DrawingDocument
Dim oSheet As Sheet
Dim oRevTable As RevisionTable
Dim myPoint As Inventor.Point2d
oApp = ThisApplication
oDoc = ThisDoc.Document
oSheet = oDoc.ActiveSheet

Try 
	oRevTable = oSheet.RevisionTables.Item(1)
Catch 
    MsgBox("There is no RevisionTable on this sheet.",,"iLogic")
	Exit Sub
End Try

Dim PointX As Double
Dim PointY As Double
Dim SizeX As Double
Dim SizeY As Double

SizeX = oRevTable.RangeBox.MaxPoint.X - oRevTable.RangeBox.MinPoint.X
SizeY = oRevTable.RangeBox.MaxPoint.Y - oRevTable.RangeBox.MinPoint.Y
PointX = PointX-SizeX
PointY = PointY

myPoint = oApp.TransientGeometry.CreatePoint2d(PointX, PointY)
oRevTable.Position = myPoint

 

Yeah guys... that's the clue. 

Now everything works fine. Don't know, why I didnt't recognize, that there was no revisiontable on drawing.