Aller au contenu

Sélection rapide textmult en fonction de sa largeur


oran

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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."

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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]

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

....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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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é