Netparty Posté(e) le 20 juin 2020 Posté(e) le 20 juin 2020 Bonjour à tous Voila, je suis à la recherche d'un LISP qui permet de faire une rotation d'un attribut d'un bloc.J'ai déjà trouver se genre de LISP mais il fait une rotation de tous les attributs du bloc,ce que je souhaite c'est de faire une rotation uniquement sur l'attribut sur lequel je clic. Si vous avez une idée pour moi. Je vous en remercie d'avance. Bon weekend à tous
didier Posté(e) le 20 juin 2020 Posté(e) le 20 juin 2020 Coucou En préambule il faudrait savoir si tu veux apprendre ou si tu es à la recherche d'un truc "clés en main"Si tu as un LSP qui fait tous les attributs il ne reste qu'à bidouiller sur le jeu de sélectionTu ne dis pas si tu veux pouvoir donner la valeur de rotation graphiquement ? une valeur angulaire précise ? se référer à une entité existante ?Dis tout ça et la solution arrivera Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Steven Posté(e) le 20 juin 2020 Posté(e) le 20 juin 2020 Bonjour Netparty, Il n'y a pas besoin de lisp pour faire ce que tu souhaites.Tu peux te créer un bloc dynamique en créant un paramètre de rotation et une action de rotation sur ton attribut. Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
rebcao Posté(e) le 20 juin 2020 Posté(e) le 20 juin 2020 Bonjour, Tu peux aussi utiliser cette MACRO : *^C^C-attedit;_Y;;;;\;_A;0;; Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
Steven Posté(e) le 20 juin 2020 Posté(e) le 20 juin 2020 Sinon, il y a aussi le lisps de notre regretté Patrick_35, rot0, si tu souhaites que l'attribut ou les attributs de ton bloc soit toujours horizontaux. ou sinon, tu peux te créer un style de texte annotatif pour tes attributs et cocher faire correspondre à la présentation, si tu souhaites que l'attribut soit toujours horizontal. Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
Netparty Posté(e) le 20 juin 2020 Auteur Posté(e) le 20 juin 2020 Bonjour à tous merci pour vos réponses, un peu plus de précision dans ma demande par rapport à vos réponse : - Le Lisp que j'ai trouvé fonctionne bien si je veux changer tous les attributs du bloc en une fois, mais comme je n'y connais rien en programmation lisp je suis incapable de le modifier- pour la rotation je souhaiterais qu'au clic l'attribut sur le quel je clic fasse une rotation de 90°- je n'utilise pas de bloc dynamique, car je fait beaucoup d'extraction de quantité et j'ai déjà rencontré quelques soucis donc je cherche un truc simple et rapide a chaque clic 90° de plus à l'attribut Merci bonne journée
Luna Posté(e) le 20 juin 2020 Posté(e) le 20 juin 2020 Bonjour, Il s'agit d'un code basique mais fonctionnel pour ce que tu recherches : (defun c:ATTROT (/ name) (while (and (setq name (car (nentsel "\nVeuillez cliquer sur un attribut : "))) (= (cdr (assoc 0 (entget name))) "ATTRIB") ) (entmod (subst (cons 50 (+ (cdr (assoc 50 (entget name))) (/ pi 2.0))) (assoc 50 (entget name)) (entget name))) ) (if name (prompt "\nErreur : L'objet sélectionné n'est pas un attribut") (prompt "\nFin de la commande") ) (princ) ) Bisous,Luna
didier Posté(e) le 20 juin 2020 Posté(e) le 20 juin 2020 Coucou Pas mieux,Le temps de l'écrire Luna a déjà publié, bravoJe pense que c'est résolu mais on va attendre l'avis de l'auteur de la question.Je proposais (sans vérification du genre de la sélection)--------------------------------- (defun c:rotatt ( / att ) (setq att (car (nentsel "\nAttribut ?\n"))) (entmod (subst (cons 50 (+ (/ pi 2) (cdr (assoc 50 (entget att)))))(assoc 50 (entget att))(entget att) )) ) [/color][/font][font="Courier New"][color="#0000FF"] --------------------------------- Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Netparty Posté(e) le 20 juin 2020 Auteur Posté(e) le 20 juin 2020 Merci Luna et Didier pour votre aide,les 2 lisp fonctionne à merveille. Encore une petite question est-il possible de choisir l'angle de rotation avant de cliquer sur l'attribut. Encore un tout grand merci Bon weekend
didier Posté(e) le 20 juin 2020 Posté(e) le 20 juin 2020 (modifié) Coucou La question de départ portait sur une rotation d'un quart de tour de l'attribut et on a répondu dans ce sens mais je ne vais pas faire la mauvaise têteJe te propose donc ça :----------------------------------(defun c:rotattdir ( / att) (setq att (car (nentsel "\nAttribut ?\n"))) (if ( equal '(0 0 0) (cdr (assoc 11 (entget att)))) (setq pins (cdr (assoc 10 (entget att)))) (setq pins (cdr (assoc 11 (entget att)))) ) (setq dir (+ (/ pi 2)(getangle pins "\nDirection ?\n"))) (entmod (subst (cons 50 dir) (assoc 50 (entget att))(entget att))) (entupd att) )----------------------------------Ça va te permettre de choisir dynamiquement une directionSoit dit en passant : si tu veux bien relire la réponse 4 de REBCAO elle est très efficace. Amicalement Modifié le 20 juin 2020 par (gile) Suppression des bbcodes à l'intérieur du code Éternel débutant... Mon site perso : Programmer dans AutoCAD
Netparty Posté(e) le 21 juin 2020 Auteur Posté(e) le 21 juin 2020 Bonjour Didier Encore merci Bonne fin de week-end
lecrabe Posté(e) le 24 juin 2020 Posté(e) le 24 juin 2020 Hello Mr Pineau / Cognac 1) MERCI pour ta routine RotAttDir ! 2) Maitre Didier : SVP puis je solliciter de ta haute bienveillance une version 2 !? Debut = IDEM de la v1 - Traitement des blocs statiques et dynamiques - Mais apres on pose une autre question, selection des eventuels autres blocs + attributs a traiter ?(MEME Nom de Bloc Statique ou Dynamique + Meme Nom d attribut bien sur)et TOUS les Attributs de Blocs concernes tournent aussi relativement avec l angle ...( Attention 1 seul Attribut TOURNE par Bloc : celui designe au DEPART ) Vois tu ce que je veux dire ?? Merci d'avance, LA SANTE, Bye, lecrabe "triste"Automne 2020, la retraite Autodesk Expert Elite Team
JPhil Posté(e) le 26 novembre 2020 Posté(e) le 26 novembre 2020 Voici le LISP modifié qui demande l'angle avant de l'appliquer sur les attributs qu'on souhaite faire une rotation.Un clic en dehors d'un attribut ou la touche échap pour sortir. ;;; ;;; Change la rotation d'un attribut de bloc ;;; ;;; (defun c:ROTATT ( / newrotatt selatt objatt) (vl-load-com) (setq newrotatt (getangle "\nAngle : ")) (while (/= (setq selatt (nentsel "\nSélectionner l'attribut à changer de rotation :")) nil) (setq objatt (vlax-ename->vla-object (car selatt))) (if (= (vla-get-ObjectName objatt) "AcDbAttribute") (progn (vla-put-rotation objatt newrotatt) ) ) ) (princ) ) ;;; ;;; Fin Lisp ROTATT ;;; Voici le LISP source dont j'ai modifié la finalité : ;;; ;;; Change le calque d'un attribut à partir d'un nouveau calque ;;; Le calque doit être créé avant, pas de déroulement de liste pour le choisir ;;; (defun c:layatt ( / newcal selatt objatt) (vl-load-com) (setq newcal (getstring "\nNom du nouveau calque : ")) (while (/= (setq selatt (nentsel "\nSélectionner l'attribut à changer de calque:")) nil) (setq objatt (vlax-ename->vla-object (car selatt))) (if (= (vla-get-ObjectName objatt) "AcDbAttribute") (progn (vla-put-layer objatt newcal) ) ) ) (princ) ) ;;; ;;; Fin Lisp LAYATT ;;; Une version "améliorée" de ce LISP au passage : ;;; ;;; Change le calque d'un attribut à partir d'un attribut source ;;; (defun c:coplayatt ( / selattsource objattsource newcal selatt objatt) (vl-load-com) (setq selattsource (nentsel "\nSélectionner l'attribut source:")) (setq objattsource (vlax-ename->vla-object (car selattsource))) (setq newcal (vla-get-layer objattsource)) (while (/= (setq selatt (nentsel "\nSélectionner l'attribut à changer de calque:")) nil) (setq objatt (vlax-ename->vla-object (car selatt))) (if (= (vla-get-ObjectName objatt) "AcDbAttribute") (progn (vla-put-layer objatt newcal) ) ) ) (princ) ) ;;; ;;; Fin Lisp COPLAYATT ;;; 1
ClintIsWood Posté(e) le 31 mai 2022 Posté(e) le 31 mai 2022 Bonjour, Super le lisp Le 20/06/2020 à 17:06, didier a dit : (defun c:rotattdir ( / att) (setq att (car (nentsel "\nAttribut ?\n"))) (if ( equal '(0 0 0) (cdr (assoc 11 (entget att)))) (setq pins (cdr (assoc 10 (entget att)))) (setq pins (cdr (assoc 11 (entget att)))) ) (setq dir (+ (/ pi 2)(getangle pins "\nDirection ?\n"))) (entmod (subst (cons 50 dir) (assoc 50 (entget att))(entget att))) (entupd att) ) Ma question est comment le modifier pour faire un déplacement au lieu d'une rotation. Merci
Mathieu C Posté(e) le 1 juin 2022 Posté(e) le 1 juin 2022 En super basique, sans lisp, tu ctrl+clique sur tous les attributs dont tu veux modifier l'orientation (ils apparaissent sélectionnés en rouge) et dans les propriétés tu changes la rotation, et il va tourner chaque attribut à l'angle que tu as rentré dans les propriétés. Tout est dans le ctrl+clique. Anciennement ZZA427 sur CADXP, je ne fais quasiment plus d'Autocad, mais je viens voir si la partie REVIT du Forum est active. Un crédo que j'aime bien : Nul n'est si vieux qu'il ne puisse apprendre, nul n'est si jeune qu'il ne puisse enseigner.
JPhil Posté(e) le 1 juin 2022 Posté(e) le 1 juin 2022 Intéressant le ctrl+clique mais il ne faut pas que le bloc possède un lien hyperlien.
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