philous2 Posté(e) le 23 octobre 2013 Posté(e) le 23 octobre 2013 Bsr,Je cherche un truc ou une solution sur un sujet pas facile qui est la gestion des dessus-dessous.Je ne sais pas si cela est possible mais je cherche une solution voir macro pour gérer plusieurs calques de plusieurs xref en dessus-dessous au niveau hachurage.Je m'explique au boulot j'ai un plan de travaux composé de plusieurs xref, comme fond de plan géomètre, hachurache chaussée route existante concerné par mon projet, mon projet, hachurage chaussée route projet, hachurage des talutages(remblais/déblais accotements fossés) soit 5 fichiers xref attachés à mon fichier projet de travail.Sur celui-ci je veux sortir en impression une présentation montrant mon projet entier avec dans l'ordre des fichiers, projet, fond de plan,hachurage chaussée projet et talutages et enfin hachurage chaussée route existante concerné par le projet, pour distinguer comme c'est de l'aménagement surplace sur une route existante la partie neuve visible d'une couleur à la partie existante d'une autre.Avec les dessus-dessous je n'arrive pas vraiment à gérer cela efficacement comme je le souhaiterai.L'idéal serait de pouvoir avoir un petit de gestion des calques concernés sur l'ensemble de ces fichiers en imposant ou forçant l'ordre comme en déplaçant vers le haut ou bas les calques concernés.Le problème est compliqué vu que c'est sur plusieurs xref.Quelqu'un aurait-il une idée et comment faites-vous pour tenter de gérer les fameux dessus-dessous.Je précise que je suis sur Map 2012Merci de vos éventuelles idéesPhil
Tramber Posté(e) le 23 octobre 2013 Posté(e) le 23 octobre 2013 Dessus-dessous possible pour tes R-Refs comme pour tout objet mais aucunement pour les calques !Il y a bien un utilitaire pour les abonnés (plug-in of the month) qui fait ce travail, soi-disant, mais à mon avis, il ne fait que classer les objets appartenant à des calques et non des calques eux-mêmes. Bref, pas de solutions par les calques. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
philous2 Posté(e) le 23 octobre 2013 Auteur Posté(e) le 23 octobre 2013 J'ai trouvé ce code mais comme je ne suis pas certain d'avoir le module vba au boulot je nesuis pas certain que cela corresponde à ma recherche mais ça va dans ce sens. un petit code "clé en main" qui fait la liste des calques et la place dans l'espace objet. Chaque ligne de texte définissant le nom de calque, ainsi que ses propriétés type de ligne, épaisseur de trait et couleur est placé dans son calque respectif. Il peut être ainsi facile d'imprimer cette liste de calque par exemple. Comme tous les autres codes de ce site, il a été testé sous ACAD2005 et Windows XP. A copier dans un module. '-------------------------------------------------------------------'Cette macro liste les calques présents dans le dessin en écrivant'leur nom, type de trait, épaisseur de trait et couleur dans'l'espace objet. Chaque ligne sera rangée sur son calque respectif'Auparavant, la macro demandera de saisir l'emplacement de la liste'à l'écran.'------------------------------------------------------------------- Sub ListerCalques()'Liste des variablesDim Calque As AcadLayerDim objTxt As AcadTextDim interligne As DoubleDim htTexte As DoubleDim NomCalque As StringDim TypeLigne As StringDim EpLigne As StringDim Couleur As StringDim Texte As StringDim PtIns As Variant On Error GoTo ListerCalques_Error 'Initialisation de la macro 'Trouve la hauteur de texte du style courant htTexte = ThisDrawing.ActiveTextStyle.Height 'Si la hauteur=0, alors choisir la hauteur 2 If htTexte = 0 Then htTexte = 2.5 'Valeur de l'interligne interligne = 1.5 'Demande de l'emplacement de la liste PtIns = ThisDrawing.Utility.GetPoint(, "Saisir l'emplacement de la liste") 'Parcours de la liste des calques présents dans le dessin For Each Calque In ThisDrawing.Layers With Calque 'Détermination du nom du calque NomCalque = .Name 'Détermination du nom de type de ligne TypeLigne = .Linetype 'Détermination de l'épaisseur de la ligne If .Lineweight = -3 Then '-3 est le code pour les lignes Ep Par défaut EpLigne = "Par défaut" Else 'Sinon, le code de l'épaisseur est donné en 100e 'Il faut le convertir pour trouver des millimètres 'et le formater pour obtenir 2 chiffres après la virgule EpLigne = Format(CStr(.Lineweight / 100), "0.00") End If Select Case .color 'Détermination de la couleur 'ACAD possède 6 variables définissant les couleurs de base 'On traduit les variables en français. Case acWhite: Couleur = "Blanc" Case acYellow: Couleur = "Jaune" Case acGreen: Couleur = "Vert" Case acRed: Couleur = "Rouge" Case acCyan: Couleur = "Cyan" Case acBlue: Couleur = "Bleu" Case acMagenta: Couleur = "Magenta" 'Les autres couleurs, on indique leur numéro Case Else: Couleur = "N°" & CStr(.color) End Select 'Comosition de la ligne. Chaque paramètre est séparé par -- Texte = NomCalque & " -- " & TypeLigne & " -- " & EpLigne & " -- " & Couleur 'Insertion du texte dans l'espace objet Set objTxt = ThisDrawing.ModelSpace.AddText(Texte, PtIns, htTexte) objTxt.Layer = .Name 'On place le texte créé dans son calque objTxt.color = acByLayer 'On règle la couleur le texte sur Par calque objTxt.Linetype = "BYLAYER" 'On règle le type de trait du texte sur Par calque objTxt.Lineweight = acLnWtByLayer 'On règle l'épaisseur du texte sur Par calque 'On modifie la valeur y du point d'insertion en la soustrayant de 'la hauteur du texte courant x interligne choisie. PtIns(1) = PtIns(1) - htTexte * interligne End With Next 'Traitement du calque suivant 'Fin de la macroOn Error GoTo 0Exit Sub 'Gestionnaire d'erreur :ListerCalques_Error: If Err.Number = -2147352567 Or Err.Number = -2145320928 Then 'Si la touche échap ou le clic droit de la liste est pressé 'quand le point d'insertion est demandé, on quitte la macro. Exit Sub Else 'Sinon, donner un message d'erreur. MsgBox "Une erreur s'est produite", , "Liste des calques" End IfEnd Sub Dessus-dessous possible pour tes R-Refs comme pour tout objet mais aucunement pour les calques !Il y a bien un utilitaire pour les abonnés (plug-in of the month) qui fait ce travail, soi-disant, mais à mon avis, il ne fait que classer les objets appartenant à des calques et non des calques eux-mêmes. Bref, pas de solutions par les calques.
Tramber Posté(e) le 24 octobre 2013 Posté(e) le 24 octobre 2013 VBA ? pffff... je ne sais pas si ca vaut le coup. Tu as VBA dès lors que n'es pas sur LT. Le lien promis est ici.DrawOrder by Layer for AutoCADC'est un des premiers. Il marche pour la 2014 y compris. Donne-nous des nouvelles. MAis je doute pour les Xref...... Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
philous2 Posté(e) le 29 octobre 2013 Auteur Posté(e) le 29 octobre 2013 bjr Tramber,Le logiciel VBA n'est plus installéé avec Autocad et je n'ai pas les droits au boulot donc impossible pour moi, tant pis VBA ? pffff... je ne sais pas si ca vaut le coup. Tu as VBA dès lors que n'es pas sur LT. Le lien promis est ici.DrawOrder by Layer for AutoCADC'est un des premiers. Il marche pour la 2014 y compris. Donne-nous des nouvelles. MAis je doute pour les Xref......
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant