TRYING TO UPDATE PARTS AND SAVE THEM TO VARIOUS DIRECTORIS THEN UPDATE THE ASSEMBLY TO NEW PART NAMES

TRYING TO UPDATE PARTS AND SAVE THEM TO VARIOUS DIRECTORIS THEN UPDATE THE ASSEMBLY TO NEW PART NAMES

bmc_dowell
Participant Participant
211 Views
1 Reply
Message 1 of 2

TRYING TO UPDATE PARTS AND SAVE THEM TO VARIOUS DIRECTORIS THEN UPDATE THE ASSEMBLY TO NEW PART NAMES

bmc_dowell
Participant
Participant
'UPDATE AND SAVE TUBE
 Dim UPDATEPIPE As PartDocument = ThisApplication.Documents.Open(AUTOMATIONDIR & BASEFILE, False)
	UPDATEPIPE.ComponentDefinition.Parameters.Item("DIAMETER").Expression = DIAMETER
	UPDATEPIPE.ComponentDefinition.Parameters.Item("THICKNESS").Expression = THICKNESS
	UPDATEPIPE.ComponentDefinition.Parameters.Item("TUBELENGTH").Expression = TUBELENGTH
	UPDATEPIPE.ComponentDefinition.Material.Name = MATERIALLIST
	UPDATEPIPE.Update
	UPDATEPIPE.Update2 
	UPDATEPIPE.SaveAs(TUBELOCATION, True)
	UPDATEPIPE.Save
	UPDATEPIPE.Close

If UPDATEFLANGE = 1 Then
Dim UPDATESFS As PartDocument = ThisApplication.Documents.Open(AUTOMATIONDIR & SFSFILE, False)
	UPDATESFS.ComponentDefinition.Parameters.Item("FLANGETHICK").Expression = FLANGETHICK
	UPDATESFS.ComponentDefinition.Parameters.Item("DIAMETER").Expression = DIAMETER
	UPDATESFS.ComponentDefinition.Parameters.Item("INNEROFFSET").Expression = INNEROFFSET
	UPDATESFS.ComponentDefinition.Parameters.Item("OUTEROFFSET").Expression = OUTEROFFSET
	UPDATESFS.ComponentDefinition.Parameters.Item("HOLEOFFSET").Expression = HOLEOFFSET
	UPDATESFS.ComponentDefinition.Parameters.Item("NUMOFHOLES").Expression = NUMOFHOLES
	UPDATESFS.ComponentDefinition.Parameters.Item("HOLEDIAMETER").Expression = HOLEDIAMETER
	UPDATESFS.ComponentDefinition.Parameters.Item("FLANGEANGLE").Expression = FLANGEANGLE
	UPDATESFS.ComponentDefinition.Material.Name = MATERIALLIST
	UPDATESFS.Update
	UPDATESFS.Update2 
	UPDATESFS.SaveAs(SFSLOCATION,True)
	UPDATESFS.SaveAs(ASSEMBLYLOCATION & SFSNEWFILE,True)
	UPDATESFS.Save
	UPDATESFS.Close
End If	
	
	
'UPDATE AND SAVE SFA

If UPDATEANGLE = 1 Then
Dim UPDATESFA As PartDocument = ThisApplication.Documents.Open(AUTOMATIONDIR & SFAFILE, False)
	UPDATESFA.ComponentDefinition.Parameters.Item("LEGLENGTH").Expression = LEGLENGTH
	UPDATESFA.ComponentDefinition.Parameters.Item("LEGTHICKNESS").Expression = LEGTHICKNESS
	UPDATESFA.ComponentDefinition.Parameters.Item("TOECURVE").Expression = TOECURVE
	UPDATESFA.ComponentDefinition.Parameters.Item("HEELCURVE").Expression = HEELCURVE
	UPDATESFA.ComponentDefinition.Parameters.Item("ANGLEOFFSET").Expression = ANGLEOFFSET
	UPDATESFA.ComponentDefinition.Parameters.Item("DIAMETER").Expression = DIAMETER
	UPDATESFA.ComponentDefinition.Parameters.Item("ANGLERING").Expression = ANGLERING
	UPDATESFA.ComponentDefinition.Parameters.Item("HOLEDIAMETER").Expression = HOLEDIAMETER
	UPDATESFA.ComponentDefinition.Parameters.Item("HOLEOFFSET").Expression = HOLEOFFSET
	UPDATESFA.ComponentDefinition.Parameters.Item("NUMOFHOLES").Expression = NUMOFHOLES
	UPDATESFA.ComponentDefinition.Material.Name = MATERIALLIST
	UPDATESFA.Update
	UPDATESFA.Update2 
	UPDATESFA.Save
	UPDATESFA.SaveAs(SFALOCATION, True)
	UPDATESFA.SaveAs(ASSEMBLYLOCATION & SFANEWFILE, True)
	UPDATESFA.Close
End If

'UPDATE AND SAVE SFS
If UPDATEFLANGE = 1 Then
Dim UPDATESFS As PartDocument = ThisApplication.Documents.Open(AUTOMATIONDIR & SFSFILE, False)
	UPDATESFS.ComponentDefinition.Parameters.Item("FLANGETHICK").Expression = FLANGETHICK
	UPDATESFS.ComponentDefinition.Parameters.Item("DIAMETER").Expression = DIAMETER
	UPDATESFS.ComponentDefinition.Parameters.Item("INNEROFFSET").Expression = INNEROFFSET
	UPDATESFS.ComponentDefinition.Parameters.Item("OUTEROFFSET").Expression = OUTEROFFSET
	UPDATESFS.ComponentDefinition.Parameters.Item("HOLEOFFSET").Expression = HOLEOFFSET
	UPDATESFS.ComponentDefinition.Parameters.Item("NUMOFHOLES").Expression = NUMOFHOLES
	UPDATESFS.ComponentDefinition.Parameters.Item("HOLEDIAMETER").Expression = HOLEDIAMETER
	UPDATESFS.ComponentDefinition.Parameters.Item("FLANGEANGLE").Expression = FLANGEANGLE
	UPDATESFS.ComponentDefinition.Material.Name = MATERIALLIST
	UPDATESFS.Update
	UPDATESFS.Update2 
	UPDATESFS.SaveAs(SFSLOCATION,True)
	UPDATESFS.SaveAs(ASSEMBLYLOCATION & SFSNEWFILE,True)
	UPDATESFS.Save
	UPDATESFS.Close
End If	

'SAVEAS IAM
MessageBox.Show("SAVE IAM")	
MessageBox.Show(AUTOMATIONDIR & ASSEMBLYFILE)	
Dim UPDATEASSY As AssemblyDocument 
	UPDATEASSY = ThisApplication.Documents.Open(AUTOMATIONDIR & ASSEMBLYFILE, False)
MessageBox.Show("FILE OPEN")	
	UPDATEASSY.SaveAs(IAMFILEPATH, True)
	UPDATEASSY.Close

'UPDATE AND SAVE IAM
 MessageBox.Show("UPDATE AND SAVE IAM")
 MessageBox.Show(IAMFILEPATH)
Dim UPDATEASSY2 As AssemblyDocument = ThisApplication.Documents.Open(IAMFILEPATH, False)
	UPDATEASSY2.ComponentDefinition.Parameters.Item("FLANGEANGLE").Expression = FLANGEANGLE
	
	Dim ACD As AssemblyComponentDefinition = UPDATEASSY2.ComponentDefinition

	For i As Integer = 1 To ACD.Occurrences.Count
    	Dim NUMPARTS As ComponentOccurrence = ACD.Occurrences.Item(i)
		If Left(NUMPARTS.Name, 3) = "SFA"
			NUMPARTS.Replace(ASSEMBLYLOCATION & SFANEWFILE, False)
		Else If Left(NUMPARTS.Name, 3) = "SFS"
			NUMPARTS.Replace(ASSEMBLYLOCATION & SFSNEWFILE, False)
		Else If Left(NUMPARTS.Name, 3) = "FLG"
			NUMPARTS.Replace(ASSEMBLYLOCATION & SFSNEWFILE, False)
		Else
			NUMPARTS.Replace(TUBELOCATION, False)
		End If
	Next
	UPDATEASSY2.Update
	UPDATEASSY2.Update2 
	UPDATEASSY2.Save
	UPDATEASSY2.Close

everything but the iam portion will work
then nothing works
I think it might have to do with autorun, but I am not sure how to turn it off


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.PartDocument.SaveAs(String FileName, Boolean SaveCopyAs)
at ThisRule.Main()
at Autodesk.iLogic.Exec.AppDomExec.ExecRuleInAssembly(Assembly assem)
at iLogic.RuleEvalContainer.ExecRuleEval(String execRule) 

0 Likes
Accepted solutions (1)
212 Views
1 Reply
Reply (1)
Message 2 of 2

A.Acheson
Mentor
Mentor
Accepted solution

Here is an update. Mostly focusing on replacing occurrences. Added try catches in case there is errors on replacing files and also "then" to if statements. I had to switch off the parameters sections to test. If it occurs again ensure you are offering valid fullfilenames. 

	
	'UPDATE AND SAVE TUBE
 Dim UPDATEPIPE As PartDocument = ThisApplication.Documents.Open(AUTOMATIONDIR & BASEFILE, False)
	UPDATEPIPE.ComponentDefinition.Parameters.Item("DIAMETER").Expression = DIAMETER
	UPDATEPIPE.ComponentDefinition.Parameters.Item("THICKNESS").Expression = THICKNESS
	UPDATEPIPE.ComponentDefinition.Parameters.Item("TUBELENGTH").Expression = TUBELENGTH
	UPDATEPIPE.ComponentDefinition.Material.Name = MATERIALLIST
	UPDATEPIPE.Update
	UPDATEPIPE.Update2 
	UPDATEPIPE.SaveAs(TUBELOCATION, True)
	UPDATEPIPE.Save
	UPDATEPIPE.Close

If UPDATEFLANGE = 1 Then
Dim UPDATESFS As PartDocument = ThisApplication.Documents.Open(AUTOMATIONDIR & SFSFILE, False)
	UPDATESFS.ComponentDefinition.Parameters.Item("FLANGETHICK").Expression = FLANGETHICK
	UPDATESFS.ComponentDefinition.Parameters.Item("DIAMETER").Expression = DIAMETER
	UPDATESFS.ComponentDefinition.Parameters.Item("INNEROFFSET").Expression = INNEROFFSET
	UPDATESFS.ComponentDefinition.Parameters.Item("OUTEROFFSET").Expression = OUTEROFFSET
	UPDATESFS.ComponentDefinition.Parameters.Item("HOLEOFFSET").Expression = HOLEOFFSET
	UPDATESFS.ComponentDefinition.Parameters.Item("NUMOFHOLES").Expression = NUMOFHOLES
	UPDATESFS.ComponentDefinition.Parameters.Item("HOLEDIAMETER").Expression = HOLEDIAMETER
	UPDATESFS.ComponentDefinition.Parameters.Item("FLANGEANGLE").Expression = FLANGEANGLE
	UPDATESFS.ComponentDefinition.Material.Name = MATERIALLIST
	UPDATESFS.Update
	UPDATESFS.Update2 
	UPDATESFS.SaveAs(SFSLOCATION,True)
	UPDATESFS.SaveAs(ASSEMBLYLOCATION & SFSNEWFILE,True)
	UPDATESFS.Save
	UPDATESFS.Close
End If	
	
	
'UPDATE AND SAVE SFA

If UPDATEANGLE = 1 Then
Dim UPDATESFA As PartDocument = ThisApplication.Documents.Open(AUTOMATIONDIR & SFAFILE, False)
	UPDATESFA.ComponentDefinition.Parameters.Item("LEGLENGTH").Expression = LEGLENGTH
	UPDATESFA.ComponentDefinition.Parameters.Item("LEGTHICKNESS").Expression = LEGTHICKNESS
	UPDATESFA.ComponentDefinition.Parameters.Item("TOECURVE").Expression = TOECURVE
	UPDATESFA.ComponentDefinition.Parameters.Item("HEELCURVE").Expression = HEELCURVE
	UPDATESFA.ComponentDefinition.Parameters.Item("ANGLEOFFSET").Expression = ANGLEOFFSET
	UPDATESFA.ComponentDefinition.Parameters.Item("DIAMETER").Expression = DIAMETER
	UPDATESFA.ComponentDefinition.Parameters.Item("ANGLERING").Expression = ANGLERING
	UPDATESFA.ComponentDefinition.Parameters.Item("HOLEDIAMETER").Expression = HOLEDIAMETER
	UPDATESFA.ComponentDefinition.Parameters.Item("HOLEOFFSET").Expression = HOLEOFFSET
	UPDATESFA.ComponentDefinition.Parameters.Item("NUMOFHOLES").Expression = NUMOFHOLES
	UPDATESFA.ComponentDefinition.Material.Name = MATERIALLIST
	UPDATESFA.Update
	UPDATESFA.Update2 
	UPDATESFA.Save
	UPDATESFA.SaveAs(SFALOCATION, True)
	UPDATESFA.SaveAs(ASSEMBLYLOCATION & SFANEWFILE, True)
	UPDATESFA.Close
End If

'UPDATE AND SAVE SFS
If UPDATEFLANGE = 1 Then
Dim UPDATESFS As PartDocument = ThisApplication.Documents.Open(AUTOMATIONDIR & SFSFILE, False)
	UPDATESFS.ComponentDefinition.Parameters.Item("FLANGETHICK").Expression = FLANGETHICK
	UPDATESFS.ComponentDefinition.Parameters.Item("DIAMETER").Expression = DIAMETER
	UPDATESFS.ComponentDefinition.Parameters.Item("INNEROFFSET").Expression = INNEROFFSET
	UPDATESFS.ComponentDefinition.Parameters.Item("OUTEROFFSET").Expression = OUTEROFFSET
	UPDATESFS.ComponentDefinition.Parameters.Item("HOLEOFFSET").Expression = HOLEOFFSET
	UPDATESFS.ComponentDefinition.Parameters.Item("NUMOFHOLES").Expression = NUMOFHOLES
	UPDATESFS.ComponentDefinition.Parameters.Item("HOLEDIAMETER").Expression = HOLEDIAMETER
	UPDATESFS.ComponentDefinition.Parameters.Item("FLANGEANGLE").Expression = FLANGEANGLE
	UPDATESFS.ComponentDefinition.Material.Name = MATERIALLIST
	UPDATESFS.Update
	UPDATESFS.Update2 
	UPDATESFS.SaveAs(SFSLOCATION,True)
	UPDATESFS.SaveAs(ASSEMBLYLOCATION & SFSNEWFILE,True)
	UPDATESFS.Save
	UPDATESFS.Close
End If	

'SAVEAS IAM
MessageBox.Show("SAVE IAM")	
MessageBox.Show(AUTOMATIONDIR & ASSEMBLYFILE)	
Dim UPDATEASSY As AssemblyDocument 
	UPDATEASSY = ThisApplication.Documents.Open(AUTOMATIONDIR & ASSEMBLYFILE, False)
MessageBox.Show("FILE OPEN")	
	UPDATEASSY.SaveAs(IAMFILEPATH, True)
	UPDATEASSY.Close

'UPDATE AND SAVE IAM
 MessageBox.Show("UPDATE AND SAVE IAM")
 MessageBox.Show(IAMFILEPATH)
Dim UPDATEASSY2 As AssemblyDocument = ThisApplication.Documents.Open(IAMFILEPATH, False)
	UPDATEASSY2.ComponentDefinition.Parameters.Item("FLANGEANGLE").Expression = FLANGEANGLE
	
	Dim ACD As AssemblyComponentDefinition = UPDATEASSY2.ComponentDefinition

	For i As Integer = 1 To ACD.Occurrences.Count
    	Dim NUMPARTS As ComponentOccurrence = ACD.Occurrences.Item(i)
		If Left(NUMPARTS.Name, 3) = "SFA" Then
			Try
				NUMPARTS.Replace(ASSEMBLYLOCATION & SFANEWFILE, False)
			Catch
				MessageBox.Show("Error in replacing file : " & ASSEMBLYLOCATION & SFANEWFILE)
			End Try
		ElseIf Left(NUMPARTS.Name, 3) = "SFS" Then
			Try
				NUMPARTS.Replace(ASSEMBLYLOCATION & SFSNEWFILE, False)
			Catch
				MessageBox.Show("Error in replacing file : " & ASSEMBLYLOCATION & SFSNEWFILE)
			End Try
		ElseIf Left(NUMPARTS.Name, 3) = "FLG" Then
			Try
				NUMPARTS.Replace(ASSEMBLYLOCATION & SFSNEWFILE, False)
			Catch
				MessageBox.Show("Error in replacing file : " & ASSEMBLYLOCATION & SFSNEWFILE)
			End Try
		Else
			Try
				NUMPARTS.Replace(TUBELOCATION, False)
			Catch
				MessageBox.Show("Error in replacing occurrence in else statement")
			End Try
		End If
	Next
	UPDATEASSY2.Update
	UPDATEASSY2.Update2 
	UPDATEASSY2.Save
	UPDATEASSY2.Close
	
	
	
	
	

 

If this solved a problem, please click (accept) as solution.‌‌‌‌
Or if this helped you, please, click (like)‌‌
Regards
Alan
0 Likes