Communauté
Inventor - Français
Bienvenue sur les forums Inventor d’Autodesk. Partagez vos connaissances, posez des questions, collaborez sur des idées, et explorez les sujets Inventor populaires.
annuler
Affichage des résultats de 
Afficher  uniquement  | Rechercher plutôt 
Vouliez-vous dire : 

Mise en plan couleur

4 RÉPONSES 4
RÉSOLU
Répondre
Message 1 sur 5
Anonymous
842 Visites, 4 Réponses

Mise en plan couleur

Bonjour, 

 

Je travail en 3D avec Inventor 2018 et en 2D avec Autocad 2019. Je cherche un moyen d'exporter en DWG 2D les mises en plans de mes ensembles 3D tout en respectant les couleurs de mon assemblage 3D. D'après ce que j'ai pu trouver, pour coloriser une mise en plan DWG sur Inventor on peut :

- Coloriser chaque pièce une par une à la main (long et fastidieux pour de gros ensemble avec plusieurs vues de coupe), ceci respecte les trait continus/discontinus

- Utiliser une macro, qui affecte au contour de chaque pièce de la mise en plan la couleur de son solide 3D correspondant. Mais cette macro transforme toutes les arrête cachées en trait continus… 

 

De plus, j'aimerais bien si possible que lors de l'export vers Autocad chaque pièce soit sous forme de bloc autocad, un peu comme lorsque l'on passe par un export IGES depuis le 3d et un import IGES sur autocad, mais en respectant les arrêtes visible/cachées, ce qui n'est pas le cas avec le modèle IGES.

 

Quelqu'un a t'il une solution ? ou une modification à apporter à la macro ? 

Merci 

 

Voici la dite macro, trouvée sur un forum :

 

Public Sub ChangeLayerOfOccurrenceCurves()
   ' Get the active drawing document.
   Dim drawDoc As DrawingDocument
   Set drawDoc = ThisApplication.ActiveDocument
   ' Have the user select a drawing view.
   Dim drawView As DrawingView
   Set drawView = ThisApplication.CommandManager.Pick( _
                  kDrawingViewFilter, "Select a drawing view.") 
   Dim docDesc As DocumentDescriptor
   Set docDesc = drawView.ReferencedDocumentDescriptor 
   ' Verify that the selected drawing view is of an assembly.
   If docDesc.ReferencedDocumentType <> kAssemblyDocumentObject Then
      MsgBox "The selected view must be of an assembly."
      Exit Sub
   End If 
   ' Get the component definition for the assembly.
   Dim asmDef As AssemblyComponentDefinition
   Set asmDef = docDesc.ReferencedDocument.ComponentDefinition 
   ' Process the occurrences, wrapping it in a transaction so the
   ' entire process can be undone with a single undo operation.
   Dim trans As Transaction
   Set trans = ThisApplication.TransactionManager.StartTransaction( _
                               drawDoc, "Change drawing view color") 
   ' Call the recursive function that does all the work.
   Call ProcessAssemblyColor(drawView, asmDef.Occurrences)
   trans.End
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
         Set color = occ.GetRenderStyle(sourceType) 
         ' Get the TransientsObjects object to use later.
         Dim transObjs As TransientObjects
         Set transObjs = ThisApplication.TransientObjects 
         ' Verify that a layer exists for this color.
         Dim layers As LayersEnumerator
         Set layers = drawView.Parent.Parent.StylesManager.layers 
         Dim drawDoc As DrawingDocument
         Set drawDoc = drawView.Parent.Parent 
         On Error Resume Next
         Dim colorLayer As Layer
         Set 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
            Set newColor = transObjs.CreateColor(red, green, blue) 
            ' Copy an arbitrary layer giving it the name
            ' of the render style.
            Set colorLayer = layers.Item(1).Copy(color.Name)
            ' Set 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
         Set drawcurves = drawView.DrawingCurves(occ)
         If Err.Number = 0 Then
            On Error GoTo 0 
            ' Create an empty collection.
            Dim objColl As ObjectCollection
            Set 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

 

 

Étiquettes (4)
4 RÉPONSES 4
Message 2 sur 5
ThomasB44
en réponse à: Anonymous

Salut @Anonymous 

J'ai déjà vu ce code quelque part...🤔

Il est basé sur la commande "sélectionner comme arêtes"

Capture.JPG

Cette commande ne fait pas de distinction entre arêtes visibles, cachées, tangentes...

Et je ne crois pas, à ma connaissance, qu'il y ait la possibilité de sélectionner toutes les arêtes, visibles par exemple, d'une seule pièce.

 

Pour les blocs, il y a une possibilité. Lorsque tu crées un dessin Inventor au format DWG, chaque vue est automatiquement transformée en bloc Autocad. Donc si tu as une vue de ta pièce seule, tu la retrouveras sous Autocad en ouvrant ton fichier Inventor et en insérant le bloc.


Thomas
Mechanical Designer / Inventor Professionnal 2023
Inventor Professional EESignature

Message 3 sur 5
Anonymous
en réponse à: ThomasB44

Salut, 

Merci de ta réponse, je connaissais le truc des vues puis insertion en tant que bloc. Cela est très bien pour les pièces uniques, après pour les ensemble, on se retrouve avec une seul bloc de la vue d'ensemble, et pas de sous bloc de chaque pièce. De plus, cela ne résout pas le problème de la mise en couleur...

 

Merci de ta réponse 

Message 4 sur 5
Fabian_perree
en réponse à: Anonymous

Bonjour @Anonymous ,

 

Je ne vois pas de solution malheureusement mais l'idée à été suggérée pour les couleurs : https://forums.autodesk.com/t5/inventor-ideas/drawing-view-change-color-of-sub-part-assembly-through-complete/idi-p/5692884

 

Et pour les blocs je n'ai trouvé que ça qui pourrait impliquer un export des vues en blocs, sinon n'hésitez pas à poster votre proposition.

 

https://forums.autodesk.com/t5/inventor-ideas/saving-an-inventor-dwg-view-as-a-sketched-symbol/idi-p/5863676

 

https://forums.autodesk.com/t5/inventor-ideas/smarter-dwg-export-to-autocad-modelspace-and-paperspace-with/idi-p/5505557

 

 

Il faut voter pour espérer qu'elle soit prise en compte pour les futures mise à jour.

 

 

Cordialement

Fabian Perrée
Giùp.fr | LinkedIn

Ce post vous a été utile ? N'hésitez pas à aimer ce post.
Ce post a-t-il répondu à votre question ? Cliquez sur le bouton Accepter la solution.

EESignature

Cliquez ici pour accéder à toutes mes formations en ligne
Inventor 2022 : Modélisation et documentation de systèmes mécaniques
Message 5 sur 5
patrick.emin
en réponse à: Anonymous

Bonjour @Anonymous 

Si une des réponses résout votre problème ou vous a permis de mieux le comprendre, voulez vous avoir l'amabilité de cliquer sur le bouton  APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Merci de ne pas accepter comme solution le message que vous êtes en train de lire.


Patrick Emin animateur de la communauté francophone


Vous avez trouvé un message utile? Alors donnez un "J'aime" à ce message!
Votre question a eu une réponse satisfaisante? Voulez vous avoir l'amabilité de cliquer sur le bouton
 APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Signez notre Livre d'Or

Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.

Publier dans les forums  

Autodesk Design & Make Report