oran Posté(e) le 19 octobre 2007 Posté(e) le 19 octobre 2007 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
Matt666 Posté(e) le 19 octobre 2007 Posté(e) le 19 octobre 2007 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."
Patrick_35 Posté(e) le 19 octobre 2007 Posté(e) le 19 octobre 2007 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
sechanbask Posté(e) le 19 octobre 2007 Posté(e) le 19 octobre 2007 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 Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
sechanbask Posté(e) le 19 octobre 2007 Posté(e) le 19 octobre 2007 dix fois trop tard cependant, j'ai appris des choses en cherchant et n'est ce pas là le but ? ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
oran Posté(e) le 22 octobre 2007 Auteur Posté(e) le 22 octobre 2007 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]
(gile) Posté(e) le 22 octobre 2007 Posté(e) le 22 octobre 2007 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
oran Posté(e) le 22 octobre 2007 Auteur Posté(e) le 22 octobre 2007 ....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
sechanbask Posté(e) le 22 octobre 2007 Posté(e) le 22 octobre 2007 le sujet est résolu ? oran > si tu veux un topo pour le VBA : Sous autocad faire ALT+F8cliquez 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 Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
oran Posté(e) le 22 octobre 2007 Auteur Posté(e) le 22 octobre 2007 ....et bien je vais m'y mettre sur le champ.. ;) Merci à toi,oran
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