(gile) Posté(e) le 5 mai 2008 Posté(e) le 5 mai 2008 Ho la !!C'est quoi cette histoire de fous :casstet: :casstet: Sur certaine 2007, ça fonctonne, sur d'autres (MAP), ça plante.Sur certaines 2008, ça fonctionne, sur d'autre, ça plante.Sur certaine 2009, ça plante, sur d'autre ça fonctionne mal... Ça ne vient peut-être pas des versions, ils ont des trucs spéciaux vos attributs ???!!!... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 5 mai 2008 Posté(e) le 5 mai 2008 Re, J'me pose la même question de toi ! Rien de spécial en ce qui me concerne,.. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 5 mai 2008 Posté(e) le 5 mai 2008 Merci lili2006, J'ai réussi à localiser des erreurs avec ton fichier (comme quoi ça fonctionnait pas si bien) il semblerait que ça vienne de la propriété TextAlignmentPoint suivant la justification des textes d'attribut.J'ai modifié le code Réponse 22 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 5 mai 2008 Posté(e) le 5 mai 2008 Re, Forcément, j'ai testé plusieurs blocs, et pas de problèmes particuliers ,... Un pur hasard alors ? Comme quoi, plusieurs testeurs sont indispensables,... Merci à toi (gile). Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Patrick_35 Posté(e) le 5 mai 2008 Posté(e) le 5 mai 2008 Je suis dans une présentation en espace objet. Mais j'ai un scu à 90° @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
lili2006 Posté(e) le 5 mai 2008 Posté(e) le 5 mai 2008 Re, Comme ça ? http://images0.hiboox.com/images/1908/atua0p67.jpg Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Patrick_35 Posté(e) le 5 mai 2008 Posté(e) le 5 mai 2008 Re,Ben oui, sauf que le texte ne suit pas @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 6 mai 2008 Posté(e) le 6 mai 2008 Patrick_35, La variable DRAGMODE est-elle bien à 2 ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lecrabe Posté(e) le 6 mai 2008 Posté(e) le 6 mai 2008 Hello Gilles Super, ca marche maintenant sur mon MAP 2008 :) :D J'ai pas encore testé sur MAP 2007, mais j'ai confiance :P Gilles, je te salue "bien bas" pour la qualité de tes développements et ta réactivité ;) Très subtil le fait de transformer l'attribut en texte temporairement pour pouvoir visualiser dynamiquement le déplacement du texte :cool: Le Decapode (qui te remercie) Autodesk Expert Elite Team
(gile) Posté(e) le 6 mai 2008 Posté(e) le 6 mai 2008 J'ai apporté une nouvelle petite modification pour que l'affichage soit cohérent dans les SCU 3d (pivotés sur les axes X et/ou Y) Merci à tous les testeurs ;) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
pelloux Posté(e) le 6 mai 2008 Auteur Posté(e) le 6 mai 2008 J'ai pu testé la dernière modification envoyée par Gilles et ça fonctionne bien maintenant chez moi avec AutoCAD Map 2008. C'était plus que quelques lignes qu'il fallait rajouter au code d'origine. Merci à Gilles. Si le lisp fonctionne chez tous les testeurs, je pense que l'on peut clôturer le sujet ? Bonne journée. PHP
Patrick_35 Posté(e) le 6 mai 2008 Posté(e) le 6 mai 2008 C'était plus que quelques lignes qu'il fallait rajouter au code d'origine. Encore faut-il les trouver. La variable DRAGMODE est-elle bien à 2 ? J'y ai pensé ce matin. Je vérifie ce soir et je redis.Devais être fatigué hier soir. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 6 mai 2008 Posté(e) le 6 mai 2008 Voilà une version finalisée, renommée MoveAtt. J'ai supprimé les tests qui me semblaient désormais inutiles.J'ai ajouté des contrôles pour couvrir toutes les justifications (y compris aligné et ajuster)J'ai regroupé les 2 LISP en un seul : à la première invite "Sélectionnez un attribut ou [bloc] : " l'utilisateur peut choisir de sélectionner les attributs un par un (comme move_att) ou faire Entrée, Espace ou entrer "b" pour pour sélectionner les attributs par bloc (comme move-att). EDIT : Contrôle des calques ;; MOVEATT (gile) 07/05/08 ;; Déplace les attributs ;; Par défaut l'utilisateur sélectionne les attributs un par un ;; L'option "Bloc" permet de déplacer tous les attributs des blocs sélectionnés (defun c:MoveAtt (/ space att lst1 lst2 ss1 ss2 tmp cl lay lck txt al p1 p2) (vl-load-com) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))) ) (initget "Bloc") (setq att (nentsel "\nSélectionnez un attribut ou [bloc] [b]: ")) (if (or (null att) (= att "Bloc")) (if (ssget '((0 . "INSERT") (66 . 1))) (vlax-for blk (setq ss1 (vla-get-ActiveSelectionSet *acdoc*)) (setq lst1 (append (vlax-invoke blk 'getAttributes) lst1)) ) ) (progn (and (setq att (car att)) (= (cdr (assoc 0 (entget att))) "ATTRIB") (setq lst1 (cons (vlax-ename->vla-object att) lst1)) (redraw att 3) ) (while (setq att (car (nentsel "\nSélectionnez un attribut: "))) (and (= (cdr (assoc 0 (entget att))) "ATTRIB") (setq lst1 (cons (vlax-ename->vla-object att) lst1)) (redraw att 3) ) ) ) ) (if lst1 (progn (vla-StartUndoMark *acdoc*) (setq space (if (= 1 (getvar "cvport")) (vla-get-PaperSpace *acdoc*) (vla-get-ModelSpace *acdoc*) ) ss2 (ssadd) tmp (vla-add (vla-get-Layers *acdoc*) "MoveAtt_tmp") cl (vla-get-ActiveLayer *acdoc*) ) (vla-put-ActiveLayer *acdoc* tmp) (foreach a lst1 (setq lay (vla-item (vla-get-Layers *acdoc*) (vla-get-Layer a))) (and (= (vla-get-Lock lay) :vlax-true) (setq lck (cons lay lck)) (vla-put-Lock lay :vlax-false) ) (setq txt (vla-addText space (vla-get-TextString a) (vla-get-InsertionPoint a) (vla-get-Height a) ) ) (foreach prop '(Backward Linetype LinetypeScale Normal ObliqueAngle Rotation ScaleFactor StyleName Thickness TrueColor UpsideDown ) (vlax-put-property txt prop (vlax-get-property a prop)) ) (setq al (vla-get-Alignment a)) (vla-put-Alignment txt al) (and (member al '(0 3 5)) (vla-put-InsertionPoint txt (vla-get-InsertionPoint a) ) ) (or (= 0 al) (vla-put-TextAlignmentPoint txt (vla-get-TextAlignmentPoint a) ) ) (setq ss2 (ssadd (vlax-vla-object->ename txt) ss2) lst2 (cons txt lst2) ) ) (if (not (vl-catch-all-error-p (vl-catch-all-apply (function (lambda () (setq p1 (getpoint "\nSpécifiez le point de base: ")) (vl-cmdf "_.move" ss2 "" p1 pause) (setq p2 (getvar "lastpoint")) ) ) ) ) ) (mapcar (function (lambda (a) (vla-move a (vlax-3d-point (trans p1 1 0)) (vlax-3d-point (trans p2 1 0)) ) ) ) lst1 ) ) (vla-put-ActiveLayer *acdoc* cl) (mapcar 'vla-delete lst2) (vla-delete tmp) (mapcar (function (lambda (x) (vla-put-Lock x :vlax-true))) lck ) (vla-EndUndoMark *acdoc*) ) ) (princ) ) [Edité le 6/5/2008 par (gile)] [Edité le 8/5/2008 par (gile)] 1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 7 mai 2008 Posté(e) le 7 mai 2008 Bonsoir Après vérification, la variable DRAFMODE est bien à 2 @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 7 mai 2008 Posté(e) le 7 mai 2008 Mince, je pensais avoir réglé la question. si tu fais : (setq ss2 (ssget)) (setq p1 (getpoint "\nSpécifiez le point de base: ")) (vl-cmdf "_.move" ss2 "" p1 pause) (setq p2 (getvar "lastpoint")) tu vois les objets se délacer ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 7 mai 2008 Posté(e) le 7 mai 2008 Re, Oui J'ai un peu de temps. Je décortique ton lisp @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Patrick_35 Posté(e) le 7 mai 2008 Posté(e) le 7 mai 2008 Euréka Le texte créé est mis sur le calque 0, qui est gelé dans ma fenêtre. C'est tout simplement cela. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 7 mai 2008 Posté(e) le 7 mai 2008 Bien, ça explique le pourquoi du comment, et ça me fait dire que s'il avait été verrouillé ça aurait provoqué une erreur.Je vais modifier le LISP pour contrôler tout ça... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 7 mai 2008 Posté(e) le 7 mai 2008 Voilà, si des attributs étaient sur des calques verrouillés, ceux-ci seront déverrouillés le temps du déplacement, et les textes temporaires sont créés sur un nouveau calque lui aussi temporaire. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 8 mai 2008 Posté(e) le 8 mai 2008 Bonjour à toutes et tous, Testé dans tous les sens (il me semble,...!) sur une V2008, marche nickel. Merci encore (gile) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lecrabe Posté(e) le 8 mai 2008 Posté(e) le 8 mai 2008 Hello J'ai testé aussi sur un MAP 2004, ça fonctionne Nickel-Chrome ! :) :D et comme d'hab, c'est du Grand Gilles :cool: :P Le Decapode Autodesk Expert Elite Team
Bred Posté(e) le 4 juin 2008 Posté(e) le 4 juin 2008 Salut (gile),je pense que tu dois connaitre, mais on ne sait jamais... (vl-cmdf "_.move" ss2 "" p1 pause) Vu que c'est une commande express, tu veux certainement pas l'utiliser, mais connais tu la commande acet-ss-drag-move ?(c'est une commande "dll" des express : dans l'editeur, elle passe en bleu.) Trouvé dans Afralisp :(acet-ss-drag-move ss pt [prompt] [highlight [cursor]]) Drag a selection set to change location. Argumentsss: The selection set to drag. pt: The base point. prompt: A message to display before dragging is started. highlight: If given, causes a rubber-band line to be drawn from pt to the current cursor position while dragging; this parameter can be nil to draw a rubber-band line in the inverse of the screen color, or non-nil to draw a highlighted line. cursor: The cursor form to display while dragging (0=crosshairs, 1=no cursor, 2=target). Return ValuesNormally returns the selected point, but will honor initget settings and can return arbitrary text or keywords. Returns nil if the dragging operation is aborted. Note:The acet-ss-drag-move function does not move the selection set, but allows selection of a new position while showing how the result will appear. Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
bono05 Posté(e) le 4 juin 2008 Posté(e) le 4 juin 2008 C'est super pratique ce lisp....car je doid souvent deplacer mes attributs. Mais est-ce possible de faire une rotation des attributs avec le lisp? ;) Merci les pros!!
ClintIsWood Posté(e) le 31 mai 2022 Posté(e) le 31 mai 2022 Bonjour, Super Lisp, quelqu'un serait-il capable de le modifier pour que lorsque on sélectionne l'attribut le point 1 soit directement sélectionner sur un des coin de l'attribut cela éviterait beaucoup de clic souris 🙂 Merci
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