Inventor General Discussion

Inventor General Discussion

*Expert Elite*
Posts: 2,930
Registered: ‎03-08-2006
Message 1 of 1 (1,039 Views)

iLogic set Design View Representation by material

1039 Views, 0 Replies
12-22-2011 12:50 PM

This topic is in response to another thread:



I figured I'd start an new topic with the subject line that might come up in future searches in case it helps someone at some point.


Here's an ilogic rule to handle the view reps. I didn't test it all that thoughly, so I can't promise you won't find an error. Also note that it looks for a view rep of the same name it is trying to create, and deletes it if found. I think there is a better way to handle this, but I didn't find the time to work on this any further.


I hope this helps.
Best of luck to you in all of your Inventor pursuits,



'define the Material being looked at
Dim oMatl as Object
oMatl = "Steel"
'define View Rep name
Dim oNotMatl as Object
oNotMatl = "No " & oMatl 

' set a reference to the assembly component definintion.
' This assumes an assembly document is open.
Dim oAsmCompDef As AssemblyComponentDefinition
oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition
Dim oViewRep As DesignViewRepresentation

'Look for an existing View Rep of the same name and delete it if found
For Each oViewRep in oAsmCompDef.RepresentationsManager.DesignViewRepresentations
	If oViewRep.Name = "Master"  Then
	'set the Master View Rep to be active
	'if Master is already active, skip error
	On error Resume Next
	'look for same name view rep
	Else if oViewRep.Name = oNotMatl  Then
	'delete same name view rep if found
	End if

'create new View Rep
oViewRep = oAsmCompDef.RepresentationsManager.DesignViewRepresentations.Add(oNotMatl)      

'define current document
Dim openDoc As Document
openDoc = ThisDoc.Document

'kAssemblyDocumentObject = 12291 
If openDoc.DocumentType = 12291 Then

	'look at all of the components in the assembly
	Dim oCompDef As Inventor.ComponentDefinition = openDoc.ComponentDefinition
	'define the first level components collection
	Dim oCompOcc As Inventor.ComponentOccurrence 
	'define the next level components collection
	Dim oSubCompOcc As Inventor.ComponentOccurrence
	'Turn off the visibility of parts in the top level assembly that are the specified mat'l
	For each oCompOcc in oCompDef.Occurrences
		If iProperties.Material (oCompOcc.Name) = oMatl Then
		'Turn the visibility off
		oCompOcc.Visible = False
		End If
		'Turn off the visibility of parts in the second level assemblies that are the specified mat'l
	    	For Each oSubCompOcc In oCompOcc.SubOccurrences
	        		'select for part files with specified material 
			If iProperties.Material (oSubCompOcc.Name) = oMatl  Then
			'Turn the visibility off
			oSubCompOcc.Visible = False
			End If
	MessageBox.Show("You must have a valid Assembly document open before using this code!", "File Type Mismatch!")
End If 





  solution.png  Did you find this reply helpful ? If so please use the Accept as Solution or  Kudos button below.

Are you familiar with the Autodesk Expert Elites? The Expert Elite program is made up of customers that help other customers by sharing knowledge and exemplifying an engaging style of collaboration. To learn more, please visit our Expert Elite website.
Need installation help?

Start with some of our most frequented solutions or visit the Installation and Licensing Forum to get help installing your software.