Reyoh Posté(e) le 12 juin Posté(e) le 12 juin Bonjour, Dans ma recherche d'optimisation de mon temps de travail, je cherche une macro capable de modifier les propriétés d'un objet en l'occurrence une cotation. Mon but créer un bouton qui me permettrait de passer d'une cotation avec lignes d'attaches à une sans ligne d'attache n'ayant pas trouvé le saint graal je m'interroge sur l'éventualité de traiter le problème d'une façon différente : recréer mon style de cote sans ligne d'attache et faire des boutons pour swap entre les deux styles. Ma question est la suivante : Comment interagir avec les propriétés d'un objet via macro (commande personnalisée) ? Merci ;) Ps: je suis sur Autocad LT 2025
Luna Posté(e) le 13 juin Posté(e) le 13 juin Coucou, Pour info depuis la version AutoCAD LT 2024, les LISP sont supporté par les versions LT. En terme de macro, je ne m'y connais pas suffisamment. Dans un premier temps, faut-il modifier ces infos à la création d'une cotation ou bien sur des objets existants ? Car la réflexion n'est pas la même selon la réponse. Dans le cas d'une modification lors de la création de nouveaux objets, tu peux t'aider de ceci (variables systèmes relative aux cotations) : Citation -COTLIN [ANnotatif/Sauvegrd/Restaurer/Etat/Variables/Appliquer/?] <Restaurer>: e DIMASO Inactif Créer des objets de cote DIMSTYLE UBS - Annotations Style de cote courant (lecture seule) DIMADEC 1 Emplacements des décimales dans les angles DIMALT Inactif Unités alternatives sélectionnées DIMALTD 3 Nombre de décimales de l'unité alternative DIMALTF 0.04 Facteur d'échelle de l'unité alternative DIMALTMZF 100.00 Autre facteur négatif pour les cotes métriques DIMALTMZS Autre suffixe négatif pour les cotes métriques DIMALTRND 0.00 Valeur d'arrondissement des unités d'alternance DIMALTTD 3 Changer la précision décimale des tolérances DIMALTTZ 0 Tolérance alternative de suppression du zéro DIMALTU 2 Changer les unités DIMALTZ 0 Unité alternative de suppression du zéro DIMAPOST Préfixe et suffixe pour le texte alternatif DIMARCSYM 0 Symbole de longueur d'arc DIMASZ 0.15 Dimension de la flèche DIMATFIT 3 Ajustement texte et flèches DIMAUNIT 0 Format des unités angulaires DIMAZIN 0 Suppression du zéro angulaire DIMBLK FerméePleine Cartouche de la flèche DIMBLK1 FerméePleine Cartouche de la première flèche DIMBLK2 FerméePleine Cartouche de la deuxième flèche DIMCEN 0.15 Dimension de la marque centrale DIMCLRD DUBLOC Couleur de la ligne de cote et de la ligne de repère DIMCLRE DUBLOC Couleur de la ligne d'attache DIMCLRT DUCALQUE Couleur du texte de cote DIMDEC 2 Changer la précision décimale des tolérances DIMDLE 0.00 Prolongement de la ligne de cote DIMDLI 0.00 Espacement de la ligne de cote DIMDSEP , Séparateur des décimales DIMEXE 0.05 Prolongement au-dessus de la ligne de cote DIMEXO 0.05 Décalage de l'origine de la ligne d'attache DIMFRAC 0 Format de fraction DIMFXL 0.10 Ligne d'attache fixe DIMFXLON Actif Activer la ligne d'attache fixe DIMGAP 0.10 Espace entre la ligne de cote et le texte DIMJOGANG 45.0 Angle de raccourcissement de cote de rayon DIMJUST 0 Justification du texte sur les lignes de cote DIMLDRBLK FerméePleine Nom de bloc des lignes de repère DIMLFAC 1.00 Facteur d'échelle linéaire DIMLIM Inactif Générer les limites de cote DIMLTEX1 CACHE Ligne d'attache de type 1 DIMLTEX2 CACHE Ligne d'attache de type 2 DIMLTYPE Continuous Type de ligne de cote DIMLUNIT 2 Format d'unité linéaire DIMLWD 0 Epaisseur de ligne repère et épaisseur de ligne de cote DIMLWE 0 Epaisseur de ligne de prolongement DIMMZF 100.00 Facteur négatif pour les cotes métriques DIMMZS Suffixe négatif pour les cotes métriques DIMPOST m Préfixe et suffixe pour le texte de cote DIMRND 0.00 Valeur arrondie DIMSAH Inactif Séparer les blocs de flèches DIMSCALE 1.00 Facteur d'échelle général DIMSD1 Inactif Supprimer la 1ère ligne de cote DIMSD2 Inactif Supprimer la 2ème ligne de cote DIMSE1 Inactif Supprimer la première ligne d'attache DIMSE2 Inactif Supprimer la deuxième ligne d'attache DIMSOXD Actif Supprimer les lignes de cote extérieures DIMTAD 0 Placer le texte au-dessus de la ligne de cote DIMTDEC 2 Précision décimale des tolérances DIMTFAC 1.00 Tolérance du facteur d'échelle de hauteur de texte DIMTFILL 0 Arrière-plan texte activé DIMTFILLCLR 1 (rouge) Couleur de l'arrière-plan texte DIMTIH Inactif Le texte à l'intérieur des attaches est horizontal. DIMTIX Inactif Placer le texte à l'intérieur des attaches DIMTM 0.00 Tolérance négative DIMTMOVE 1 Mouvement du texte DIMTOFL Actif Forcer la ligne à l'intérieur des lignes d'attaches DIMTOH Actif Texte à l'extérieur horizontal DIMTOL Inactif Cotation de tolérance DIMTOLJ 0 Justification verticale des tolérances DIMTP 0.00 Tolérance positive DIMTSZ 0.00 Dimension de la marque DIMTVP 0.00 Position verticale du texte DIMTXSTY Verdana Style de texte DIMTXT 0.15 Hauteur du texte DIMTXTDIRECTION Inactif Direction du texte de cote DIMTZIN 8 Suppression zéro de la tolérance DIMUPT Inactif Texte positionné par l'utilisateur DIMZIN 0 Suppression zéro Il s'agit donc des variables DIMSE1 et DIMSE2 qui contrôle la suppression des lignes d'attaches et elles acceptent les valeurs _On (= Actif en FR) ou _Off (= Inactif en FR). Donc en clair, tu peux créer une macro dans le genre pour le cas où tu souhaites modifier les cotations avant la création d'une cotation (ici une cotation linéaire) : ^C^C_DIMSE1;_On;_DIMSE2;_On;_DIMLINEAR;\;\;\;; Tu peux également simplement faire : ^C^C_DIMSE1;_On;_DIMSE2;_On; Pour ton premier bouton (permettant de supprimer les lignes d'attaches pour les prochaines cotations crées), puis pour le second bouton (permettant d'afficher les lignes d'attaches pour les prochaines cotations crées) : ^C^C_DIMSE1;_Off;_DIMSE2;_Off; Désolée de ne pas pouvoir faire plus. Il me semble impossible de modifier les propriétés d'une cotation existante en macro cependant, mais encore une fois, cela dépasse mes compétences dans ce domaine. Bisous, Luna 1
Reyoh Posté(e) le 24 juin Auteur Posté(e) le 24 juin Merci pour ta réponse =) (et désolé pour la mienne tardive) Pour moi la solution la plus simple reste celle évoqué dans mon premier message : recréer mon style de cote sans ligne d'attache et faire des boutons pour swap entre les deux styles. cela permet de le faire avant et après création de la cote . J'attend de voir si quelqu'un d'autre a une proposition à faire concernant la problématique de base : Comment interagir avec les propriétés d'un objet via macro (commande personnalisée) ?
bonuscad Posté(e) le 24 juin Posté(e) le 24 juin Il y a 5 heures, Reyoh a dit : J'attend de voir si quelqu'un d'autre a une proposition à faire concernant la problématique de base : Comment interagir avec les propriétés d'un objet via macro (commande personnalisée) ? Alors avec un LT 2024 ou plus, on peut envisager ce code lisp. Exemple d'utilisation: (dimattach 1) -> enlève les lignes d'attaches de la cotation sélectionnée (dimattach 0) -> remet les lignes d'attaches de la cotation sélectionnée Ces instructions pourraient être mises dans un bouton... (defun dimattach (b / ss elst xd) (cond ((and (eq (type b) 'INT) (or (zerop b) (eq b 1))) (princ "\nSélectioner une cotation.") (while (setq ss (ssget "_+.:E:S" '((0 . "DIMENSION")))) (setq elst (entget (ssname ss 0) '("ACAD")) xd (assoc -3 elst) ) (entmod (append (if xd (entget (ssname ss 0)) elst) (list (list -3 (cons "ACAD" (list (cons 1000 "DSTYLE") (cons 1002 "{") (cons 1070 76) (cons 1070 b) (cons 1070 75) (cons 1070 b) (cons 1002 "}") ) ) ) ) ) ) (princ "\nSélectioner une cotation.") ) ) (T (princ "\nLa fonction requiert l'argument entier 1 ou 0 ")) ) (prin1) ) 1 Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Reyoh Posté(e) le 9 juillet Auteur Posté(e) le 9 juillet Bonjour, Merci pour ta réponse =) J'ai eu brièvement le temps d'essayer les lisp mais j'avoue ne pas encore saisir le pourquoi du comment ca marche... J'ai vu qu'il y avait des tutos à droite à gauche je garde ça sous le coude pour quand le temps ne me manquera pas ;) Je fais évoluer ma question : Est il possible d'interagir avec les propriétés d'un objet via macro (commande personnalisée) ? Si oui comment ? Bonne journée
Olivier Eckmann Posté(e) le 9 juillet Posté(e) le 9 juillet Hors programmation (lisp) ça ne me semble pas possible via macro (diesel). Tu peux essayer ça qui inverse la visibilité des lignes d'attache (je pense que ça doit marcher sous LT) (defun C:CotInvAttach ( / ssDim oDim oDimVla) (while (setq ssDim (ssget "_+.:E:S" '((0 . "DIMENSION")))) (setq oDim (ssname ssDim 0)) (setq oDimVla (vlax-ename->vla-Object oDim)) (if (= (vla-get-ExtLine1Suppress oDimVla) :vlax-true) (vla-put-ExtLine1Suppress oDimVla :vlax-false) (vla-put-ExtLine1Suppress oDimVla :vlax-true) ) (if (= (vla-get-ExtLine2Suppress oDimVla) :vlax-true) (vla-put-ExtLine2Suppress oDimVla :vlax-false) (vla-put-ExtLine2Suppress oDimVla :vlax-true) ) ) ) Olivier 1
Luna Posté(e) le 9 juillet Posté(e) le 9 juillet Coucou, Il y a 2 heures, Reyoh a dit : Je fais évoluer ma question : Est il possible d'interagir avec les propriétés d'un objet via macro (commande personnalisée) ? Si oui comment ? Il n'y a pas réellement de réponse à cette question malheureusement... En langage DIESEL la réponse est non, en LISP ou autre...et bien tout va dépendre de la propriété, du type d'objet, de ce que signifie "interagir" précisément, etc... En clair, il n'existe AUCUN programme (tout langage de programmation) en mesure "d’interagir" avec n'importe quelle propriété de n'importe quel objet. Certaines propriété sont accessible via la liste DXF d'un objet, d'autres à partir des propriétés de l'API COM/ActiveX ou Visual, etc... Donc s'il faut répondre à la question : ce n'est pas possible en l'état, il faut plus de précision concernant le besoin réel. Bisous, Luna 1
Reyoh Posté(e) le 10 juillet Auteur Posté(e) le 10 juillet Hello ! Comme je l'expliquais dans mon premier post je vais utiliser un chemin détourné pour arriver à mes fins qui me permettra de faire un swap entre plusieurs style de cotes et plusieurs échelles en un clic. Le LISP me prendra malheureusement trop de temps à assimilé pour l'instant. Je manque de temps pour le développement mais je ne manquerais pas de vous faire part de ma solution le jour ou elle émergera. Un grand merci à tous pour vos réponses =) Gardez la forme !
Olivier Eckmann Posté(e) le 10 juillet Posté(e) le 10 juillet Bonjour @Reyoh, Il n'y a pas à assimiler le lisp ni de développement à faire, puisque les codes complets ont été donnés. Il suffit juste de les mettre en œuvre. Le tuto pour charger un lisp et l'utiliser dans AutoCAD : https://youtu.be/QmloOJ9xFZA J'ai utilisé les 2 codes fournis (celui de @bonuscad et le mien) pour voir les différences dans la mise en œuvre. Olivier 1
rebcao Posté(e) le 11 juillet Posté(e) le 11 juillet Bonjour, Pour gérer les cotes, je passerai par des STYLES DE COTES... Bien plus souple et facile à utiliser. Car forcer certaines propriétés de certaines cotes c'est comme forcer les propriétés des objets au lieu de passer par les calques ! Christian 1 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 @)
Reyoh Posté(e) le 12 juillet Auteur Posté(e) le 12 juillet Le 10/07/2024 à 21:36, Olivier Eckmann a dit : Il n'y a pas à assimiler le lisp ni de développement à faire, puisque les codes complets ont été donnés. C'est en effet fort aimable de me fournir le code mais j'aime comprendre comment fonctionne un outil avant de m'en servir ;) Il y a 21 heures, rebcao a dit : Pour gérer les cotes, je passerai par des STYLES DE COTES... C'est exactement ce que je compte faire mais en passant par une macro pour changer le style de la cote et sont échelle annotative en un clic :)
Olivier Eckmann Posté(e) le 12 juillet Posté(e) le 12 juillet il y a 24 minutes, Reyoh a dit : C'est en effet fort aimable de me fournir le code mais j'aime comprendre comment fonctionne un outil avant de m'en servir 😉 C'est très noble, mais lorsque l'on a une problématique, un outil qui y répond, ça peut être pratique. S'il fallait savoir construire une voiture de A à Z avant de pouvoir la conduire, il y aurait beaucoup moins de bouchon 🙂 Pour apprendre le lisp, il y a des tas de ressources et pour une fois en français. Olivier 1
Steven Posté(e) le 12 juillet Posté(e) le 12 juillet il y a 48 minutes, Reyoh a dit : C'est exactement ce que je compte faire mais en passant par une macro pour changer le style de la cote et sont échelle annotative en un clic 🙂 Salut, Tu souhaites changer le style de la cote ou changer la cote de style ? Ce sont 2 choses différente. Si tu souhaite changer le style de la cote, ça va changer toutes les cotes du même style. Si tu souhaites changer la cote de style, tu ne modifieras que la cote sélectionné en lui assignant un autre style. Dans le second cas, comme l'a dit Christian, @rebcao, il faut te créer un style cote et faire en sorte que celui-ci soit annotatif. Ça sera bien plus souple et plus sûr. Le fait de forcer les propriétés d'une cote, n'est pas forcément la meilleurs solution. 1 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.
Reyoh Posté(e) le 18 juillet Auteur Posté(e) le 18 juillet Le 12/07/2024 à 12:04, Steven a dit : Salut, Tu souhaites changer le style de la cote ou changer la cote de style ? Ce sont 2 choses différente. Si tu souhaite changer le style de la cote, ça va changer toutes les cotes du même style. Si tu souhaites changer la cote de style, tu ne modifieras que la cote sélectionné en lui assignant un autre style. Dans le second cas, comme l'a dit Christian, @rebcao, il faut te créer un style cote et faire en sorte que celui-ci soit annotatif. Ça sera bien plus souple et plus sûr. Le fait de forcer les propriétés d'une cote, n'est pas forcément la meilleurs solution. Hello ! Les deux Je souhaite créer une macro qui change le style de cote courant, l'échelle annotative courante et le calque courant Si dans la même macro il est possible de redéfinir le tout pour une cote sélectionné c'est top. La bise
didier Posté(e) le 18 juillet Posté(e) le 18 juillet Bonjour @Reyoh j'aime comprendre comment fonctionne un outil avant de m'en servir Il y a des gens qui font leur possible pour que ceux qui veulent apprendre trouvent matière à ça. Auto-promo éhontée dans ma signature. Amicalement 1 Éternel débutant... Mon site perso : Programmer dans AutoCAD
Reyoh Posté(e) le 24 juillet Auteur Posté(e) le 24 juillet (modifié) Le 18/07/2024 à 10:56, didier a dit : Bonjour @Reyoh j'aime comprendre comment fonctionne un outil avant de m'en servir Il y a des gens qui font leur possible pour que ceux qui veulent apprendre trouvent matière à ça. Auto-promo éhontée dans ma signature. Amicalement Bonjour Didier, j'ai regarder sur votre site sans trouver de réponses à mes questions, je n'ais aucun souci avec l'auto-promotion il est juste dommage de constater que ca ne concerne pas le sujet en cours. Pour rappel je n'ais pas le temps (ni l'envie) de m'intéressé au LISP je souhaite continuer sur des choses que je maitrise même partiellement. Voici ou j'en suis avec mon bazar : ]CODE[ Change le style de cote, l’échelle, le calque et la couleur courante ]^C^C_-DIMSTYLE;R;"Annotatif SLA" _CANNOSCALE;1:5;_-LAYER;CH;"PLA_102_COTATION_POSE"; _-COLOR;DUCALQUE;[ Nom du style de cote / valeur de l'échelle annotative / nom du calque / valeur de la couleur Change le calque de l’objet sélectionné ]^C^C_CHPROP;CA;PLA_102_Cotation_pose;;[ Nom du calque La suite quand j'aurais le temps ;) Bises Modifié le 24 juillet par Reyoh Update des lignes de commande
Reyoh Posté(e) le 5 août Auteur Posté(e) le 5 août (modifié) Bonjour tout le monde ! je suis actuellement bloqué sur un sujet concernant les commandes : Citation ^C^C_CHPROP;CA;"PLA_102_Cotation_pose";CO;ducalque;; _OPTCHPROP;P;;C;"Annotatif POSE";; Le problème vient du fait qu'entre la commande CHPROP et OPTCHPROP je perd ma sélection. J'utilise pourtant SELECT;P;"espace" qui en dehors des macro récupère bien ma sélection, qui a l'air de le faire dans la macro mais OPTCHPROP me demande de resélectionner mon objet ce que je ne souhaite bien entendu pas faire en cours de macro. EDIT : Je suis en train de me dire que ma commande commence par ^C^C ce qui représente la double utilisation de la touche échap et donc désélectionne tout cependant cela n'a pas l'air de gêner l'utilisation de CHPROP sur l'objet sélectionner en amont ce qui est plutôt étrange... Si vous avez des suggestions je suis preneur ! Au plaisir =) EDIT2 : J'ai trouver la solution à mon problème (le repas porte conseil) Citation ^C^C_CHPROP;CA;"PLA_102_Cotation_pose";CO;ducalque;; _OPTCHPROP;P;;C;"Annotatif POSE";; En entrant P quand OPTCHPROP demande une sélection il resélectionne la précédente on peut donc supprimer la partie SELECT;P;"espace" qui au final ne sert a rien Je vous ferais un retour global de mes résultats si cela intéresse quelqu'un dans le cas contraire on peu considérer le sujet comme clos La bise ! Modifié le 5 août par Reyoh Solution trouvée =) 1
Reyoh Posté(e) le 5 août Auteur Posté(e) le 5 août Bonsoir à tous ! Je reviens vous faire un petit résumé de mes trouvailles : Citation Comment interagir avec les propriétés d'un objet via macro (commande personnalisée) ? Commande CHPROP et OPTCHPROP (il s'avère qu'en cherchant bien c'est possible en DIESEL :p) ---------------------------------------------------------- Citation Je souhaite créer une macro qui change le style de cote courant, l'échelle annotative courante et le calque courant. Il s'avère que j'ai fait un peu plus (au cas ou) la macro qui suit change le style de cote, l’échelle, le calque, la couleur, le type de ligne et l'épaisseur de ligne courante Citation ^C^C_-DIMSTYLE;R;"Annotatif SLA" _CANNOSCALE;1:5;_-LAYER;CH;"PLA_102_COTATION_POSE"; _-COLOR;DUCALQUE;-TYPELIGNE;A;DuCalque;;-EPAISSLIGNE;DuCalque; Nom du style de cote / valeur de l'échelle annotative / nom du calque / valeur de la couleur / type de ligne / épaisseur de ligne (l'espace à fin du code est important) ---------------------------------------------------------- Citation Redéfinir les éléments précédents sur un objet déjà créer (en l'occurrence une côte) Change le calque, la couleur, le type de ligne, l'épaisseur de ligne et le style de côte de l’objet sélectionné. Citation ^C^C_CHPROP;CA;"PLA_102_Cotation_pose";CO;DuCalque;T;DUCALQUE;EP;DuCalque;;_OPTCHPROP;P;;C;"Annotatif POSE";; Nom du calque / Couleur du calque / type de ligne / épaisseur de ligne / Nom du style de cote ---------------------------------------------------------- NOTA : Ces ligne de commandes ne fonctionnerons que sur un AutoCAD Français. bande de petits privilégiés ---------------------------------------------------------- C'est tout pour moi en espérant que cela vous serve à faire de jolis bouton qui vous feront gagner du temps ;) Bises 1
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