Autodesk Inventor
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic to the Top
- Bookmark
- Subscribe
- Printer Friendly Page
Re: ilogic and work plane visibility
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Your sample #3 seams to produce the same results I am having with the code I am currently using.
I am going to use your sample #3 for further discussions so that we are on the same page.
Thanks again
Re: ilogic and work plane visibility
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Hi Diswill,
I think what you're seeing is an issue with view reps in the sub assembly. Basically, we'll need to have a few lines of code check the component to see if it's an assembly file, and then use or create a view rep in the sub assembly.
To test this theory you can create a view rep in your sub assembly and ensure that your sub assembly is placed using that view rep, and then I think you'll see that the rule works as expected.
I'll post back if I have time to look into the needed code update later.
I hope this helps.
Best of luck to you in all of your Inventor pursuits,
Curtis
http://inventortrenches.blogspot.com

Did you find this reply helpful ? If so please use the Accept as Solution or Kudos button below.
Re: ilogic and work plane visibility
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
your assumption about the view representation appears to be correct.
for us assemblies are normally places with the master view representation.
Your assistance is greatly appreciated.
Re: ilogic and work plane visibility
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Hi Diswill,
Let's back up a step or two.
Are you wanting to use iLogic to :
A) turn off the visibility of work planes at the top level assembly?
B) reach down into each component and turn off the visibility of the work planes
If A, then I think this one line will do the trick:
ThisApplication.CommandManager.ControlDefinitions.Item("AppAllWorkfeaturesCmd").Execute
This is the same as going to the VIew tab > Object Visibility button > All Work Features check box.
But if you're needing B, then we were on the right track earlier, and we'll need to add some lines to look at the sub assembly view reps.
I hope this helps.
Best of luck to you in all of your Inventor pursuits,
Curtis
http://inventortrenches.blogspot.com

Did you find this reply helpful ? If so please use the Accept as Solution or Kudos button below.
Re: ilogic and work plane visibility
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
We are looking at option B
Using the Object Visibility under the view tab is not what we want.
We want clean assemblies with no plane visibility being active on any part or assembly / subassembly at any level as a starting point for the next group to start working with.
The group work in works mainly with planes and it becomes a pain to go to each part and turn off each plane then move to each subassembly and turn off each plane. Then so on up to the main assembly.
When the next group grabs our main assemblies in uses them in the larger project a few planes being left on by accident becomes a problem.
Thanks
Re: ilogic and work plane visibility
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Hi Diswill,
I think this will do it. I didn't have much time to review this, so you might find some un-needed lines, etc.
I'm probably missing something obvious, but as is this example only looks at sub assemblies one level deep. Meaning that if you have an assembly in your subassembly, it won't turn off the workplanes for the same reasons as before (view reps).
If I think of something different, I'll post back.
I hope this helps.
Best of luck to you in all of your Inventor pursuits,
Curtis
http://inventortrenches.blogspot.com
sample #4
'get user input
oInput = InputRadioBox("Select workplane visibility:", _
"Turn ON workplanes for all components", "Turn OFF workplanes for all components", "False", "iLogic")
' set a reference to the assembly component definintion.
Dim oAsmCompDef As AssemblyComponentDefinition
oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition
'Define the open document (top level assembly)
Dim openDoc As Document
openDoc = ThisDoc.Document
'define view rep
Dim oViewRep As DesignViewRepresentation
Dim sVRep as String
'change to something else if Default is used for something already
sVRep = "Default"
'create or activate view rep in the top level assembly
Try
oAsmCompDef.RepresentationsManager.DesignViewRepre sentations.Item(sVRep).Activate
Catch
'create new View Rep
oAsmCompDef.RepresentationsManager.DesignViewRepre sentations.Add(sVRep)
End Try
'create or activate view rep in subassemblies
Dim docFile As Document
For Each docFile In openDoc.AllReferencedDocuments
Dim subDoc As AssemblyComponentDefinition
If docFile.DocumentType = DocumentTypeEnum.kAssemblyDocumentObject Then
subDoc = docFile.ComponentDefinition
Try
subDoc.RepresentationsManager.DesignViewRepresenta tions.Item(sVRep).Activate
Catch
'create new View Rep
subDoc.RepresentationsManager.DesignViewRepresenta tions.Add(sVRep)
End Try
Else
End If
Next
'toggle work planes in the open document (top level assembly)
For Each oWorkPlane In openDoc.ComponentDefinition.WorkPlanes
'toggle all work planes
If oInput = True Then
oWorkPlane.Visible = True
ElseIf oInput = False Then
oWorkPlane.Visible = False
End If
Next
'look at only the subassemblies
Dim subDocFile As Document
For each oCompOcc in oAsmCompDef.Occurrences
If oCompOcc.DefinitionDocumentType = DocumentTypeEnum.kAssemblyDocumentObject Then
oCompOcc.SetDesignViewRepresentation(sVRep,, True) 'True sets the view rep to be associative
Else
End If
Next
'Look at all of the files referenced in the open document
For Each docFile In openDoc.AllReferencedDocuments
'format file name
Dim FNamePos As Long
FNamePos = InStrRev(docFile.FullFileName, "\", -1)
Dim docFName As String
docFName = Right(docFile.FullFileName, Len(docFile.FullFileName) - FNamePos)
For Each oWorkPlane In docFile.ComponentDefinition.WorkPlanes
'toggle all work planes
If oInput = True Then
oWorkPlane.Visible = True
ElseIf oInput = False Then
oWorkPlane.Visible = False
End If
Next
Next
iLogicVb.UpdateWhenDone = True

Did you find this reply helpful ? If so please use the Accept as Solution or Kudos button below.
Re: ilogic and work plane visibility
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
This sample seams to catch most of our problems.
Yes we can bury assemblies several layers deep but not so deep that it will require to add to this code.
I really appreciate you and your help.
Thanks again.
Re: ilogic and work plane visibility
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
This is exactly what I was looking for.
Would it be too much to ask to supplement the code to also turn off the work axes and work points? Basically I want all the work features to turn off.
Thank you!
Re: ilogic and work plane visibility
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Hi pistonrod8,
Here is a modified version that handles all work features.
I hope this helps.
Best of luck to you in all of your Inventor pursuits,
Curtis
http://inventortrenches.blogspot.com
'get user input
oInput = InputRadioBox("Select work feature visibility:", _
"Turn ON work features for all components", _
"Turn OFF work features for all components", "False", "iLogic")
' set a reference to the assembly component definintion.
Dim oAsmCompDef As AssemblyComponentDefinition
oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition
'Define the open document (top level assembly)
Dim openDoc As Document
openDoc = ThisDoc.Document
'define view rep
Dim oViewRep As DesignViewRepresentation
Dim sVRep as String
'change to something else if Default is used for something already
sVRep = "Default"
'create or activate view rep in the top level assembly
Try
oAsmCompDef.RepresentationsManager.DesignViewRepresentations.Item(sVRep).Activate
Catch
'create new View Rep
oAsmCompDef.RepresentationsManager.DesignViewRepresentations.Add(sVRep)
End Try
'create or activate view rep in subassemblies
Dim docFile As Document
For Each docFile In openDoc.AllReferencedDocuments
Dim subDoc As AssemblyComponentDefinition
If docFile.DocumentType = DocumentTypeEnum.kAssemblyDocumentObject Then
subDoc = docFile.ComponentDefinition
Try
subDoc.RepresentationsManager.DesignViewRepresentations.Item(sVRep).Activate
Catch
'create new View Rep
subDoc.RepresentationsManager.DesignViewRepresentations.Add(sVRep)
End Try
Else
End If
Next
'toggle work features in the open document (top level assembly)
For Each oWorkPlane In openDoc.ComponentDefinition.WorkPlanes
If oInput = True Then
oWorkPlane.Visible = True
ElseIf oInput = False Then
oWorkPlane.Visible = False
End If
Next
For Each oWorkAxis In openDoc.ComponentDefinition.WorkAxes
If oInput = True Then
oWorkAxis.Visible = True
ElseIf oInput = False Then
oWorkAxis.Visible = False
End If
Next
For Each oWorkPoint In openDoc.ComponentDefinition.WorkPoints
If oInput = True Then
oWorkPoint.Visible = True
ElseIf oInput = False Then
oWorkPoint.Visible = False
End If
Next
'look at only the subassemblies
Dim subDocFile As Document
For each oCompOcc in oAsmCompDef.Occurrences
If oCompOcc.DefinitionDocumentType = DocumentTypeEnum.kAssemblyDocumentObject Then
oCompOcc.SetDesignViewRepresentation(sVRep,, True) 'True sets the view rep to be associative
Else
End If
Next
'Look at all of the files referenced in the open document
For Each docFile In openDoc.AllReferencedDocuments
'toggle work features in the components
For Each oWorkPlane In docFile.ComponentDefinition.WorkPlanes
If oInput = True Then
oWorkPlane.Visible = True
ElseIf oInput = False Then
oWorkPlane.Visible = False
End If
Next
For Each oWorkAxis In docFile.ComponentDefinition.WorkAxes
If oInput = True Then
oWorkAxis.Visible = True
ElseIf oInput = False Then
oWorkAxis.Visible = False
End If
Next
For Each oWorkPoint In docFile.ComponentDefinition.WorkPoints
If oInput = True Then
oWorkPoint.Visible = True
ElseIf oInput = False Then
oWorkPoint.Visible = False
End If
Next
Next
iLogicVb.UpdateWhenDone = True

Did you find this reply helpful ? If so please use the Accept as Solution or Kudos button below.
Re: ilogic and work plane visibility
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
That works great. Thank you!


