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

AutoCAD LT : Alignement des lignes de repère sur la gauche

8 RÉPONSES 8
RÉSOLU
Répondre
Message 1 sur 9
marion.lino94
471 Visites, 8 Réponses

AutoCAD LT : Alignement des lignes de repère sur la gauche

Bonjour, 

 

Je souhaiterais savoir s'il existe un technique pour "aligner"  de façon rapide les lignes de repère dont le texte est sur la gauche. J'ai essayé avec l'outil "aligner" mais il aligne les zones de textes (trait rouge --> qui n'ont pas toujours le même format), l'alignement n'est possible que pour lignes dont le texte se situe sur la droite.

Je souhaiterais aligner au niveau du trait blanc pour avoir quelque chose de plus cohérent.

marionlino94_0-1697098964173.png


Le titre du sujet a été modifié par un modérateur pour faciliter la recherche. Titre original:
Alignement des lignes de repère sur la gauche

 

Merci d'avance pour vos réponses.

8 RÉPONSES 8
Message 2 sur 9
tramber
en réponse à: marion.lino94

C'est vrai que c'est un défaut remarquable de cette commande. Il te reste à utiliser les poignées bleues et aligner à l'aide d'une ligne qui à effacer cette dernière ultérieurement.

Message 3 sur 9
patrick.emin
en réponse à: marion.lino94

Bonjour @marion.lino94 

Si une des réponses à votre question résout votre problème, vous a permis de le comprendre ou contribue significativement à sa résolution, voulez vous avoir l'amabilité de cliquer sur le bouton  APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?

Cela aidera les futurs lecteurs qui pourront directement aller à la solution.

Merci de ne pas accepter comme solution le message que vous êtes en train de lire.

Si nos équipes de support technique ont pu vous apporter une solution ou contribuer significativement à vous aider en dehors de ce forum, pouvez vous partager ici la solution trouvée et cliquer sur le bouton  APPROUVER LA SOLUTION  de façon qu'elle bénéficie à la communauté?
Merci.


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
Message 4 sur 9
Y.AUBRY
en réponse à: marion.lino94

Bonjour @marion.lino94,

 

Tu trouveras dans le fichier MLEADER_ALIGN.zip ci-joint une DLL contenant le code ci-dessous :

 

 

Imports AcadAp = Autodesk.AutoCAD.ApplicationServices.Application
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD.Runtime

Public Class CmdMLEADER

	<CommandMethod("MLEADER_LEFT_ALIGN", "MLLA", CommandFlags.Modal)>
	Public Sub MLEADER_LEFT_ALIGN()

		Dim doc As Document = AcadAp.DocumentManager.MdiActiveDocument
		Dim db As Database = doc.Database
		Dim ed As Editor = doc.Editor

		Dim scu As Matrix3d = ed.CurrentUserCoordinateSystem

		'Demande de la position du point d'alignement
		Dim ptStart As Point3d
		Dim pPtRes As PromptPointResult
		Dim pPtOpts As PromptPointOptions = New PromptPointOptions("")
PosX:
		pPtOpts.Message = vbLf & "Emplacement en X du point d'alignement : "
		pPtRes = doc.Editor.GetPoint(pPtOpts)

		If pPtRes.Status <> PromptStatus.OK Then GoTo PosX
		ptStart = pPtRes.Value.TransformBy(scu)

		Dim X As Double = ptStart.X

		'Demande de sélection des lignes de repère multiple (MLeader en anglais)
		Dim filter(0) As TypedValue

		Try

			filter.SetValue(New TypedValue(DxfCode.Start, "MULTILEADER"), 0)

			Dim sf As SelectionFilter = New SelectionFilter(filter)
			Dim psr As PromptSelectionResult = ed.GetSelection(sf)
			Dim ss As SelectionSet = psr.Value

			If ss.Count > 0 Then

				Using tr As Transaction = doc.Database.TransactionManager.StartTransaction()

					For Each id As ObjectId In ss.GetObjectIds()

						Dim ent As Entity = TryCast(tr.GetObject(id, OpenMode.ForWrite), Entity)

						If TypeOf ent Is MLeader Then

							Dim acML As MLeader = CType(ent, MLeader)


							If acML.TextAlignmentType = TextAlignmentType.RightAlignment Then 'Si la ligne de repère multiple a un texte avec un alignement à droite
								'Alors on déplace la ligne de repère au niveau de la coordonnée en X préalablement définie
								acML.TextLocation = New Point3d(X, acML.TextLocation.Y, acML.TextLocation.Z)
							End If

						End If
					Next

					tr.Commit()

				End Using

			End If

		Catch ex As System.Exception
			MsgBox(ex.ToString)
		End Try

	End Sub


	<CommandMethod("MLEADER_RIGHT_ALIGN", "MLRA", CommandFlags.Modal)>
	Public Sub MLEADER_RIGHT_ALIGN()

		Dim doc As Document = AcadAp.DocumentManager.MdiActiveDocument
		Dim db As Database = doc.Database
		Dim ed As Editor = doc.Editor

		Dim scu As Matrix3d = ed.CurrentUserCoordinateSystem

		'Demande de la position du point d'alignement
		Dim ptStart As Point3d
		Dim pPtRes As PromptPointResult
		Dim pPtOpts As PromptPointOptions = New PromptPointOptions("")
PosX:
		pPtOpts.Message = vbLf & "Emplacement en X du point d'alignement : "
		pPtRes = doc.Editor.GetPoint(pPtOpts)

		If pPtRes.Status <> PromptStatus.OK Then GoTo PosX
		ptStart = pPtRes.Value.TransformBy(scu)

		Dim X As Double = ptStart.X

		'Demande de sélection des lignes de repère multiple (MLeader en anglais)
		Dim filter(0) As TypedValue

		Try

			filter.SetValue(New TypedValue(DxfCode.Start, "MULTILEADER"), 0)

			Dim sf As SelectionFilter = New SelectionFilter(filter)
			Dim psr As PromptSelectionResult = ed.GetSelection(sf)
			Dim ss As SelectionSet = psr.Value

			If ss.Count > 0 Then

				Using tr As Transaction = doc.Database.TransactionManager.StartTransaction()

					For Each id As ObjectId In ss.GetObjectIds()

						Dim ent As Entity = TryCast(tr.GetObject(id, OpenMode.ForWrite), Entity)

						If TypeOf ent Is MLeader Then

							Dim acML As MLeader = CType(ent, MLeader)
							If acML.TextAlignmentType = TextAlignmentType.LeftAlignment Then 'Si la ligne de repère multiple a un texte avec un alignement à gauche
								'Alors on déplace la ligne de repère au niveau de la coordonnée en X préalablement définie
								acML.TextLocation = New Point3d(X, acML.TextLocation.Y, acML.TextLocation.Z)
							End If

						End If
					Next

					tr.Commit()

				End Using

			End If

		Catch ex As System.Exception
			MsgBox(ex.ToString)
		End Try

	End Sub

	<CommandMethod("MLEADER_TOP_ALIGN", "MLTA", CommandFlags.Modal)>
	Public Sub MLEADER_TOP_ALIGN()

		Dim doc As Document = AcadAp.DocumentManager.MdiActiveDocument
		Dim db As Database = doc.Database
		Dim ed As Editor = doc.Editor

		Dim scu As Matrix3d = ed.CurrentUserCoordinateSystem

		'Demande de la position du point d'alignement
		Dim ptStart As Point3d
		Dim pPtRes As PromptPointResult
		Dim pPtOpts As PromptPointOptions = New PromptPointOptions("")
PosY:
		pPtOpts.Message = vbLf & "Emplacement en Y du point d'alignement : "
		pPtRes = doc.Editor.GetPoint(pPtOpts)

		If pPtRes.Status <> PromptStatus.OK Then GoTo PosY
		ptStart = pPtRes.Value.TransformBy(scu)

		Dim Y As Double = ptStart.Y

		Dim filter(0) As TypedValue

		Try

			filter.SetValue(New TypedValue(DxfCode.Start, "MULTILEADER"), 0)

			Dim sf As SelectionFilter = New SelectionFilter(filter)
			Dim psr As PromptSelectionResult = ed.GetSelection(sf)
			Dim ss As SelectionSet = psr.Value

			If ss.Count > 0 Then

				Using tr As Transaction = doc.Database.TransactionManager.StartTransaction()

					For Each id As ObjectId In ss.GetObjectIds()

						Dim ent As Entity = TryCast(tr.GetObject(id, OpenMode.ForWrite), Entity)

						If TypeOf ent Is MLeader Then

							Dim acML As MLeader = CType(ent, MLeader)

							'On déplace la ligne de repère au niveau de la coordonnée en Y préalablement définie
							acML.TextLocation = New Point3d(acML.TextLocation.X, Y, acML.TextLocation.Z)

						End If
					Next

					tr.Commit()

				End Using

			End If

		Catch ex As System.Exception
			MsgBox(ex.ToString)
		End Try

	End Sub

End Class

 

 

 

Pour pouvoir utiliser cette DLL :

- Il faut parfois les débloquer lorsqu'elle sont passé par internet : pour cela, faire un clic-droit dessus puis "Propriétés" puis dans l'onglet général cocher la case "Débloquer"

YAUBRY_0-1698160960493.png

(Si cette case n'est pas présente c'est que la DLL est déjà débloquée)

 

Une fois débloquée, taper la commande "NETLOAD" dans AutoCAD et pointer sur le fichier "MLEADER_ALIGN.dll"

Nota : Il est conseillé de mettre cette DLL dans un dossier faisant parti des chemins de recherche de fichiers de support : voir Menu Outils\Options\ onglet fichier

 

Une fois la DLL chargée, les commandes sont :

  1. MLLA (pour MLEADER_LEFT_ALIGN) : alignement à gauche de la ligne de repère multiple
  2. MLRA (pour MLEADER_RIGHT_ALIGN) : alignement à droite de la ligne de repère multiple
  3. MLTA(pour MLEADER_TOP_ALIGN) : alignement en haut de la ligne de repère multiple (mais peut servir en bas également)

Cette DLL est prévue pour un fonctionnement sur les versions de 2021 à 2024 (.NET Framework 4.8) d'AutoCAD, si nécessaire revenir vers moi pour les versions précédentes.

 

A+ Yoan

Yoan AUBRY

EESignature

Message 5 sur 9
rebcao
en réponse à: Y.AUBRY

Heueeuuuuu, le sujet concerne une version LT🤔

 

Christian


Formateur Indépendant, Consultant, AutoCAD, AutoCAD LT, REVIT MEP, INVENTOR -
www.rebcao.fr

Christian REB

Message 6 sur 9
Y.AUBRY
en réponse à: rebcao

Oups... Pas fait attention a cela... Mais ca pourra servir peut-être à d'autres personnes...

 

A+ Yoan

Yoan AUBRY

EESignature

Message 7 sur 9
rebcao
en réponse à: Y.AUBRY

 

Mouais et dans un lointain, pays c'était le Goudron et les Plumes...  

 

        goudrons-plumes reduite.jpg

Mais effectivement, ça peut servir, mais ce serait tout de même une fonction qui devrait être native toutes versions.

 

Christian


Formateur Indépendant, Consultant, AutoCAD, AutoCAD LT, REVIT MEP, INVENTOR -
www.rebcao.fr

Christian REB

Message 8 sur 9
DOMICREA
en réponse à: marion.lino94

Bonjour @marion.lino94 

On peut aussi réaliser des lignes de repères sans textes et réaliser du texte avec la commande Texte à la suite. Mais pas franchement rapide et cela perd de l'intérêt de la commande... 





Dominique Michy (EI) - Formateur AutoCAD, Revit Architecture, SketchUp, V-Ray - https://www.domicrea.fr/
Message 9 sur 9
patrick.emin
en réponse à: marion.lino94

Bonjour @marion.lino94 

La communauté a essayé de répondre à votre question. Si vous pensez qu'une ou plusieurs de ces réponses vous aident, 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.
Si nos équipes de support technique ont pu vous apporter une solution ou contribuer significativement à vous aider en dehors de ce forum, pouvez vous partager ici la solution trouvée et cliquer sur le bouton  APPROUVER LA SOLUTION  de façon qu'elle bénéficie à la communauté?
Merci.


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