Aller au contenu

Sélection rapide textmult en fonction de sa largeur


Messages recommandés

Posté(e)

Bonjour,

J'ai un bon nombre de textmult de même largeur (1.4206) que je veux supprirmer.

- Sélection rapide ==> Textmult ==> largeur ==> je tape 1.4206....et là, aucune sélection :exclam: :cool: :P :casstet: .......pouvez-vous m'expliquer le pourquoi du comment ?

Oran

Posté(e)

Salut Oran !

 

Ce chiffre de largeur n'est pas assez précis pour la sélection rapide.

 

Sinon tu fais une sélection lisp...

 

(ssget "_x" (list (cons 0 "MTEXT")(cons 41 (cdr (assoc 41 (entget (car (entsel))))))))

 

A + !

Matt.

"Chacun compte pour un, et nul ne compte pour plus d'un."

Posté(e)

Salut

 

Salut

 

Pour compléter la réponse, si tu changes la précison des unités à 8 par exemple, tu verras que ce n'est pas exactement le chiffre que tu donnes

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Tiens j'avais pas vu le bug:

la sélection rapide avec la largeur du texte ne fonctionne pas avec des nombres à virgule !!

 

c'est pour les supprimer définitivement ou les changer de calque.

 

en essayant de programmer en VBA la solution à ton problème, je me suis apperçut qu'autocad n'affiche qu'une partie de la largeur du texte que lui enregistre... et même si je pousse à fond la précision de tes unités, je n'arrives pas à sélectionner le texte...

 

donc je continue mon programme... fini

 

j'espère que tu sais utiliser le VBA :

 

Sub selectiontextelargeur()

Dim objMTexte As IAcadMText2
Dim StrSelection As String
'ici on filtre les textes
Dim DataCodeDxf(0) As Variant
Dim CodeDxf(0) As Integer
Dim snglargeur As Single
Dim sel As AcadSelectionSet
Dim ent As AcadEntity
Dim ObjSelection As AcadSelectionSet
Dim obj As AcadObject


Set sel = ThisDrawing.SelectionSets.Add("sel12")
sel.SelectOnScreen
For Each obj In sel
If TypeOf obj Is AcadMText Then
   Set objMTexte = obj
  snglargeur = objMTexte.Width
   End If


Next

sel.Delete

On Error Resume Next
StrSelection = "MaSelection"
Set ObjSelection = ThisDrawing.SelectionSets(StrSelection)
If Err <> 0 Then
Err.Clear
Set ObjSelection = ThisDrawing.SelectionSets.Add(StrSelection)
End If
ObjSelection.Clear
On Error GoTo 0

CodeDxf(0) = 0: DataCodeDxf(0) = "MTEXT"

ObjSelection.Select acSelectionSetAll, , , CodeDxf, DataCodeDxf
Dim sngTotalTextes As Single
sngTotalTextes = ObjSelection.Count
Debug.Print sngTotalTextes

For Each obj In ObjSelection

If TypeOf obj Is AcadMText Then
Debug.Print "bon type"
   Set objMTexte = obj
   Debug.Print objMTexte.Width
   If objMTexte.Width = snglargeur Then
   objMTexte.Delete
   End If

End If
Next
End Sub

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

dix fois trop tard cependant, j'ai appris des choses en cherchant et n'est ce pas là le but ?

 

 

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

Merci à vous 3,

 

Salut

 

Salut

 

Pour compléter la réponse, si tu changes la précison des unités à 8 par exemple, tu verras que ce n'est pas exactement le chiffre que tu donnes

 

@+

OK merci Patrick,

je viens de tester en mettant la précision à son maxi et le pb est tjs là, aucune sélection. Alors je me pose une question: à quoi bon cette fonction ?? ;)

 

j'espère que tu sais utiliser le VBA :

Merci à toi aussi Sechanbask,.....à vrai dire non je ne sais pas, alors un petit topo serait le bienvenu... ;) (petite précision, dans mon cas ce serait pour le supprimer définitivement)

Oran[Edité le 22/10/2007 par oran][Edité le 22/10/2007 par oran]

 

[Edité le 22/10/2007 par oran]

Posté(e)

Salut,

 

As tu essayé la solution de Matt666 ? en récupérant la largeur sur un texte sélectionné, toute la précision est conservé.

 

La solution de Matt666 compare les cadres des mtextes et ne marchera pas avec les mtextes de largeur 0.

 

Dans le même esprit, en comparant la largeur (plutôt que le cadre) des mtextes : tu colles ça sur la ligne de commande et tu sélectionnes un mtexte, tous les mtextes du dessin ayant la même largeur seront sélectionnés :

 

(sssetfirst nil (ssget "_X" (list '(0 . "MTEXT") (assoc 42 (entget (car (entsel))))))) 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

....oui bien sûr j'ai essayé (...et ça marche nickel.. ;) merci à Matt), d'ailleurs je le prie de m'excuser de ne pas l'avoir remercié, j'ai bien essayé mais ayant tjs ce pb lié à ce sujet , j'ai fait 3 tentatives

Oran[Edité le 22/10/2007 par oran][Edité le 22/10/2007 par oran]

 

[Edité le 22/10/2007 par oran]

.......... :casstet: et j'ai abandonné. :P

Je vais donc tester ta solution également, merci.

Oran

Posté(e)

le sujet est résolu ?

 

oran > si tu veux un topo pour le VBA :

 

 

Sous autocad faire ALT+F8

cliquez sur "Gestionnaire VBA"

puis cliquer sur "Nouveau"

puis cliquer sur "Editeur Visual Basic"

 

Cliquer sur le menu "Insertion" et choisir "Module"

 

Coller le code gracieusement proposé.

 

Finalement retourner sur autocad et faire ALT+F8, choisir la macro et faire "Executer"

 

Bonne utilisation

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité