If you've had to use different design view representation of the same PART on a drawing in multiple Views at the same time, you already know that whenever you suppress completly a feature, the representation loose the condition stated in the model view and if the suppressed feature is reactivated, it then appear in all view. You have to right-click on the view and select "Apply design View" to reset it, or re-select the design view representation in "Edit view".
Recently I faced a case where i had to build a iLogic multi-body part representing a crate made of either sheet or bar, with a removable top and variable solid for top, sidewall and base, driven trought a in-drawing form! Reason being the customer wanted a easy, useable model for the shipping clerk to generate a custom crate drawing for the crate contractor, therefore freeing precious time for the drafting departement. Usually I would have used occurence visibillity from a assembly, but the document management part of the deal, was too much for the computer illiterate user... So, off i went creating a multi-body part, only to face the aforemention problem with view changing representation due to complete solid suppression.
After searching these forums and the web at large finding nothing to fix this problem except recreating the view each time, i made myself gallons of coffee and prepared for a night of epic battle with iLogic! After 12 hours of depressing failure (read: hair pulling, frustration, zombiness and sore finger) I finally when to sleep. Apparently my brain did not give up, for i spoke of formula during my sleep and in the morning, i spoke of a method to allow view regeneration, lucky of me, my girlfriend took note of it finding it funny, and wondering if it would make sense when i woke up. Well folks, it did. And I'd like to share it with you so it might help others.
So here's How-to Set representation view for part in drawing:
The trick is to set every view to it's representation by using the edit window interface code.
The iLogic line to set a View to a specific Design View Representation:
ActiveSheet.View("1").View.SetDesignViewRepresentation("View5", False) ActiveSheet.View("1").View.IsRasterView = False ThisApplication.ActiveView.Update()
I use this code in "IF" statement. You must repete the code for each view, removing the "Raster" line force a raster only reaction on the view, and the update must be placed after each view, otherwise it only update the last one.
Example:
If TYPE_COUVERCLE = "AUCUN" Then
ActiveSheet.View("2").View.Suppressed = True ActiveSheet.View("1").View.SetDesignViewRepresentation("View5", False) ActiveSheet.View("1").View.IsRasterView = False ThisApplication.ActiveView.Update() ActiveSheet.View("3").View.SetDesignViewRepresentation("View2", False) ActiveSheet.View("3").View.IsRasterView = False ThisApplication.ActiveView.Update() ActiveSheet.View("4").View.SetDesignViewRepresentation("View1", False) ActiveSheet.View("4").View.IsRasterView = False ThisApplication.ActiveView.Update()
Else If TYPE_COUVERCLE = "CONTREPLAQUÉ" Then
ActiveSheet.View("2").View.Suppressed = False ActiveSheet.View("1").View.SetDesignViewRepresentation("View4", False) ActiveSheet.View("1").View.IsRasterView = False ThisApplication.ActiveView.Update() ActiveSheet.View("3").View.SetDesignViewRepresentation("View2", False) ActiveSheet.View("3").View.IsRasterView = False ThisApplication.ActiveView.Update() ActiveSheet.View("4").View.SetDesignViewRepresentation("View1", False) ActiveSheet.View("4").View.IsRasterView = False ThisApplication.ActiveView.Update()
Else If TYPE_COUVERCLE = "LATTES"
ActiveSheet.View("2").View.Suppressed = False ActiveSheet.View("1").View.SetDesignViewRepresentation("View4", False) ActiveSheet.View("1").View.IsRasterView = False ThisApplication.ActiveView.Update() ActiveSheet.View("3").View.SetDesignViewRepresentation("View2", False) ActiveSheet.View("3").View.IsRasterView = False ThisApplication.ActiveView.Update() ActiveSheet.View("4").View.SetDesignViewRepresentation("View1", False) ActiveSheet.View("4").View.IsRasterView = False ThisApplication.ActiveView.Update()
End If
I'm telling the model that the disapearing element "TYPE_COUVERCLE" is driving the representation, only when it change does it fix the view, regenerating or changing the Design View Representation (the TYPE_SIDE and TYPE_BOTTOM are always active or always suppressed in their respectives views, therefore not influencing their respective appearance in other view). If you had multiple dissapearing solid or feature you would have to build a similar code for every one of them...
I hope you'll enjoy this.
Yvan De Lafontaine
TatiCAD
My congratulations!
btw You could slightly simplify this code if call ThisApplication.ActiveView.Update() method only once in the end of the rule.
cheers