Couleur de la Pièce dans les mises en plan Inventor
Autodesk Mechanical Desktop "le retour"
Souvenez vous d'Autodesk Mechanical Desktop appelé aussi MDT pour les "pratiquants"
Il avait et a encore pour ceux qui ont besoin ponctuellement, de convertir des anciens DWG paramétriques 3D vers Inventor, si si c'est toujours possible en 2021.
un paramétrage configurable (Use Part Color) dans les "Options" afin d'obtenir dans les vues de mise en plan , la même couleur que les composants.
Ceci facilite la compréhension des notices ou mode d'emploi techniques afin de mieux différencier les composants selon différentes orientations de vues.
Nous obtenions dans les "présentations" de jolies vues colorées comme la 3D.
Qu'en est-il avec Inventor 2022 ?
Et bien, cela reste encore à ce jour, une demande sur le Forum des idées Inventor avec un 45éme vote de ma part ce 15 avril 2021.
Lien ICI
Une solution de contournement consiste à lancer une règle iLogic externe de Curtis Waguespack dont voici le code :
Sub Main ' Get the active drawing document. Dim oDoc As DrawingDocument oDoc = ThisApplication.ActiveDocument Dim oSheets As Sheets oSheets = oDoc.Sheets Dim oSheet As Sheet 'get current sheet so it can 'be made active again later Dim oCurrentSheet As Sheet oCurrentSheet = oDoc.ActiveSheet Dim oViews As DrawingViews Dim oView As DrawingView ' Iterate through the sheets For Each oSheet In oSheets ' activate the sheet oSheet.Activate 'get the collection of view on the sheet oViews = oSheet.DrawingViews ' Iterate through the views on the sheet For Each oView In oViews Dim docDesc As DocumentDescriptor docDesc = oView.ReferencedDocumentDescriptor ' Verify that the drawing view is of an assembly. If docDesc.ReferencedDocumentType <> kAssemblyDocumentObject Then Continue For End If ' Get the component definition for the assembly. Dim asmDef As AssemblyComponentDefinition asmDef = docDesc.ReferencedDocument.ComponentDefinition ' Process the view, wrapping it in a transaction so the ' each view can be undone with a single undo operation. Dim trans As Transaction trans = ThisApplication.TransactionManager.StartTransaction( _ oDoc, "Change drawing view color") ' Call the recursive function that does all the work. Call ProcessAssemblyColor(oView, asmDef.Occurrences) trans.End Next 'update the sheet oSheet.Update Next 'return to original sheet oCurrentSheet.Activate End Sub Private Sub ProcessAssemblyColor(drawView As DrawingView, _ Occurrences As ComponentOccurrences) ' Iterate through the current collection of occurrences. Dim occ As ComponentOccurrence For Each occ In Occurrences ' Check to see if this occurrence is a part or assembly. If occ.DefinitionDocumentType = kPartDocumentObject Then ' ** It's a part so process the color. ' Get the render style of the occurrence. Dim color As RenderStyle Dim sourceType As StyleSourceTypeEnum color = occ.GetRenderStyle(sourceType) ' Get the TransientsObjects object to use later. Dim transObjs As TransientObjects transObjs = ThisApplication.TransientObjects ' Verify that a layer exists for this color. Dim layers As LayersEnumerator layers = drawView.Parent.Parent.StylesManager.layers Dim oDoc As DrawingDocument oDoc = drawView.Parent.Parent On Error Resume Next Dim colorLayer As Layer colorLayer = layers.Item(color.Name) If Err.Number <> 0 Then On Error GoTo 0 ' Get the diffuse color for the render style. Dim red As Byte Dim green As Byte Dim blue As Byte ' Create a color object that is the diffuse color. Call color.GetDiffuseColor(red, green, blue) Dim newColor As color newColor = transObjs.CreateColor(red, green, blue) ' Copy an arbitrary layer giving it the name ' of the render style. colorLayer = layers.Item(1).Copy(color.Name) ' the attributes of the layer to use the color, ' have a solid line type, and a specific width. colorLayer.Color = newColor colorLayer.LineType = kContinuousLineType colorLayer.LineWeight = 0.02 End If On Error GoTo 0 ' Get all of the curves associated with this occurrence. On Error Resume Next Dim drawcurves As DrawingCurvesEnumerator drawcurves = drawView.DrawingCurves(occ) If Err.Number = 0 Then On Error GoTo 0 ' Create an empty collection. Dim objColl As ObjectCollection objColl = transObjs.CreateObjectCollection() ' Add the curve segments to the collection. Dim drawCurve As DrawingCurve For Each drawCurve In drawcurves Dim segment As DrawingCurveSegment For Each segment In drawCurve.Segments objColl.Add (segment) Next Next ' Change the layer of all of the segments. Call drawView.Parent.ChangeLayer(objColl, colorLayer) End If On Error GoTo 0 Else ' It's an assembly so process its contents. Call ProcessAssemblyColor(drawView, occ.SubOccurrences) End If Next End Sub
Voici les conditions d'utilisation :
1- Créez vos différentes vues de mise en plan de manière habituelle.
2- Lancez la règle iLogic, ici nommée IDW Calque par Couleur de pièce.
NB: Nous obtenons des couleurs sur toutes les vues, toutes les feuilles et selon la vue de conception active de l'assemblage.
Les calques par couleur sont créés en fonctions de la couleur affectée à l'occurrence de pièce,
l'épaisseur de ces nouveaux calques est gérée par la règle iLogic
colorLayer.LineWeight = 0.02
0.02 ici équivaut à 0.20 mm
3- Si vous souhaitez une ou plusieurs vues colorisées sans affecter les autre vues et feuilles existantes,
il faut copier/coller la ou les vues dans un nouveau dessin vierge,
lancer la règle iLogic dans ce nouveau dessin
puis copier/coller depuis ce dessin temporaire vers la feuille de ce fichier initial.
Vous obtenez ceci :
Ces articles peuvent vous intéresser :