barbichette Posté(e) le 7 septembre 2021 Posté(e) le 7 septembre 2021 Bonjour, Je voudrais créer un lisp qui se nommerait : Décompté et qui ferait l'action suivante : Quel que soit l'objet sélectionné => déplacement dans le calque : "! ! métré - Cotation Décompté" Le calque "! ! métré - Cotation Décompté" existe déjà Comment faire ? j'ai essayé d'enregistrer une action (l'équivalent de enregistrer la macro sur Excel) mais je ne pense pas que ce soit la bonne solution... Citer ***********************Rien ne sert de courrir, il faut partir à point.
(gile) Posté(e) le 7 septembre 2021 Posté(e) le 7 septembre 2021 Salut, Montre ce que tu as déjà écrit, qu'on puisse voir où tu en es. Citer Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 7 septembre 2021 Posté(e) le 7 septembre 2021 PS : éviter les accents, les espaces et autres caractères spéciaux excepté le souligner (_) dans les noms de symboles (calques, blocs, fonctions LISP, etc), t'évitera bien des déboires ultérieurs... Citer Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
barbichette Posté(e) le 7 septembre 2021 Auteur Posté(e) le 7 septembre 2021 En fait j'en suis à : Je ne sais même pas par où commencer... Citer ***********************Rien ne sert de courrir, il faut partir à point.
JPhil Posté(e) le 7 septembre 2021 Posté(e) le 7 septembre 2021 En langage courant : Première option : 1) sélectionner un objet avec validation automatique ou manuel ? 2) déplacer l'objet vers le calque de destination Deuxième option : 1) sélectionner plusieurs objets puis validation automatique ou manuel ou validation à chaque sélection d'un objet ? 2) déplacer les objets vers le calque de destination Essaye de trouver la fonction adéquate pour chaque étape. Indice pour le point 1, tu peux utiliser la commande SSGET, pour le 2, tu peux utiliser la commande CHPROP. Il peut y avoir d'autres possibilités 😉 Citer
Olivier Eckmann Posté(e) le 8 septembre 2021 Posté(e) le 8 septembre 2021 Bonjour, Regarder du côté de (ssgetfirst) https://help.autodesk.com/view/ACD/2015/ENU/?guid=GUID-F18CB64C-1B18-46F3-BAD4-24D83214CE0D qui permet de savoir si un ou plusieurs objet(s) est (sont) sélectionnés avant de lancer la commande. Cette fonction te renvoie nil si pas d'objet sélectionné, sinon elle renvoie une liste dont le 2ème argument est le jeu de sélection des objets précédemment sélectionnés. Olivier Citer
barbichette Posté(e) le 8 septembre 2021 Auteur Posté(e) le 8 septembre 2021 Il y a 14 heures, JPhil a dit : En langage courant : Première option : 1) sélectionner un objet avec validation automatique ou manuel ? 2) déplacer l'objet vers le calque de destination Deuxième option : 1) sélectionner plusieurs objets puis validation automatique ou manuel ou validation à chaque sélection d'un objet ? 2) déplacer les objets vers le calque de destination Essaye de trouver la fonction adéquate pour chaque étape. Indice pour le point 1, tu peux utiliser la commande SSGET, pour le 2, tu peux utiliser la commande CHPROP. Il peut y avoir d'autres possibilités 😉 Salut JPhil, Tout d'abord, merci d'avoir prit le temps de regarder mon problème. Ensuite, pour répondre à ta question l'ordre est plutôt : 1) sélection du ou des objets à déplacer 2) clic sur l'icône (lié à la commande lisp) qui déplace les objets dans le calque voulu 3) désélection des objets Citer ***********************Rien ne sert de courrir, il faut partir à point.
Luna Posté(e) le 8 septembre 2021 Posté(e) le 8 septembre 2021 Coucou, La véritable question est : désires-tu que l'on écrive un programme pour toi ou bien souhaites-tu seulement que l'on te donne des pistes de recherche afin que tu puisses écrire la commande par toi-même ? Il existe de nombreuses solutions à ton problème, que se soit en terme de fonctions ou même de langage utilisé. Une macro ou un script pourrait même faire l'affaire :) Il y a 16 heures, barbichette a dit : En fait j'en suis à : Je ne sais même pas par où commencer... Lorsque tu dis chat, tu veux dire d'un point de vue général (tu ne connais pas la programmation) ou c'est un souci de vocabulaire (tu ne sais pas quelle(s) fonction(s) utiliser) ou c'est un soucis d'organigramme (ce qui ne semble pas être le cas vu que tu sais déjà ce que tu veux que ton programme fasse) ? Bisous, Luna Citer
JPhil Posté(e) le 8 septembre 2021 Posté(e) le 8 septembre 2021 il y a 49 minutes, barbichette a dit : Salut JPhil, Tout d'abord, merci d'avoir prit le temps de regarder mon problème. Ensuite, pour répondre à ta question l'ordre est plutôt : 1) sélection du ou des objets à déplacer 2) clic sur l'icône (lié à la commande lisp) qui déplace les objets dans le calque voulu 3) désélection des objets L'ordre d'exécution serait plutôt : 1) je lance le lisp 2) le lisp me demande de sélectionner un ou plusieurs objets -> l'utilisateur doit sélectionner un objet sinon le programme s'arrête 3) une fois le ou les objets sélectionnés je valide par la touche "Entrée" afin de faire comprendre au programme lisp que l'utilisateur a fini 4) le lisp va déplacer le ou les objets dans le bon calque -> l'utilisateur ne fait rien 5) ben ... le programme s'arrête et l'utilisateur n'a plus rien à faire aussi 😉 Citer
barbichette Posté(e) le 8 septembre 2021 Auteur Posté(e) le 8 septembre 2021 il y a 1 minute, Luna a dit : Coucou, La véritable question est : désires-tu que l'on écrive un programme pour toi ou bien souhaites-tu seulement que l'on te donne des pistes de recherche afin que tu puisses écrire la commande par toi-même ? Il existe de nombreuses solutions à ton problème, que se soit en terme de fonctions ou même de langage utilisé. Une macro ou un script pourrait même faire l'affaire 🙂 Lorsque tu dis chat, tu veux dire d'un point de vue général (tu ne connais pas la programmation) ou c'est un souci de vocabulaire (tu ne sais pas quelle(s) fonction(s) utiliser) ou c'est un soucis d'organigramme (ce qui ne semble pas être le cas vu que tu sais déjà ce que tu veux que ton programme fasse) ? Bisous, Luna Salut Luna, En fait je suis plutôt calé en programmation VBA pour Excel. Je connais un peu le principe des variables et des commandes. Je sais également que ce domaine est très sensible à l'écriture (code, parenthèses, ordre des commandes...) J'ai déjà posé un certains nombre de question ici, et ait reçu en retour des réponses très utiles. Mais à chaque fois que j'ai essayé de décrypter les codes qui m'ont été envoyé, je me suis heurté à mon manque de connaissance en lisp et un manque de temps pour les approfondir. Citer ***********************Rien ne sert de courrir, il faut partir à point.
barbichette Posté(e) le 8 septembre 2021 Auteur Posté(e) le 8 septembre 2021 il y a 27 minutes, JPhil a dit : L'ordre d'exécution serait plutôt : 1) je lance le lisp 2) le lisp me demande de sélectionner un ou plusieurs objets -> l'utilisateur doit sélectionner un objet sinon le programme s'arrête 3) une fois le ou les objets sélectionnés je valide par la touche "Entrée" afin de faire comprendre au programme lisp que l'utilisateur a fini 4) le lisp va déplacer le ou les objets dans le bon calque -> l'utilisateur ne fait rien 5) ben ... le programme s'arrête et l'utilisateur n'a plus rien à faire aussi 😉 En fait non... L'ordre est bien Je sélectionne les cotations que j'ai pris en compte je clic sur un icône et zou, plus rien à faire. En fait, pour expliquer la raison du besoin de ce lisp est que je l'utilise pour faire mes métrés. J'ai un certain nombre de cotation sur mon/mes plans, et dès que je prend en compte une cotation, je la déplace du calque "Cotation" au calque "Cotation décompté" Ce lisp est destiné à réduire (un tout petit peu) mes actions. Citer ***********************Rien ne sert de courrir, il faut partir à point.
barbichette Posté(e) le 8 septembre 2021 Auteur Posté(e) le 8 septembre 2021 J'ai donc fait des recherche et j'ai trouvé ce bout de code (defun c:setpl1 () (command "_.chprop" (ssget ) "" "LA" "! ! métré - Cotation Decompte" "") ) Setpl1 : lance le lisp chprop : c'est la commande qui va changer le calque de la sélection "! ! métré - cotation decompte" : est le nom du calque de destination mais cela ne fonctionne pas autocad me renvoi "<selection: 284>" Citer ***********************Rien ne sert de courrir, il faut partir à point.
(gile) Posté(e) le 8 septembre 2021 Posté(e) le 8 septembre 2021 il y a 12 minutes, barbichette a dit : je clic sur un icône et zou, plus rien à faire. Dans ce cas, une macro de commande devrait suffire. Citer Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
barbichette Posté(e) le 8 septembre 2021 Auteur Posté(e) le 8 septembre 2021 il y a 5 minutes, (gile) a dit : Dans ce cas, une macro de commande devrait suffire. Euh ? oui sûrement... Citer ***********************Rien ne sert de courrir, il faut partir à point.
barbichette Posté(e) le 8 septembre 2021 Auteur Posté(e) le 8 septembre 2021 Bon, Finalement, vous m'avez incité à chercher et comprendre au lieu de juste demander à ce que l'on me le fasse. J'ai finalement trouvé. J'ai créé un icône et lui ait attribué la macro de commande suivante : (command "_.chprop" (ssget ) "" "CA" "! ! métré - Cotation Décompté" "") et cela fonctionne. Merci Citer ***********************Rien ne sert de courrir, il faut partir à point.
JPhil Posté(e) le 8 septembre 2021 Posté(e) le 8 septembre 2021 Super si ça fonctionne 😉 Histoire de compléter pour un prochain utilisateur qui veut faire comme toi, peux-tu expliquer cette partie là "J'ai créé un icône et lui ait attribué la macro de commande". Citer
barbichette Posté(e) le 8 septembre 2021 Auteur Posté(e) le 8 septembre 2021 il y a 32 minutes, JPhil a dit : Super si ça fonctionne 😉 Histoire de compléter pour un prochain utilisateur qui veut faire comme toi, peux-tu expliquer cette partie là "J'ai créé un icône et lui ait attribué la macro de commande". Bien sur : Outils=> Personnaliser=>Menu Dans le cadre liste des commandes, créer une nouvelle commande Donner un nom, dans la macro : ^C^C(command "_.chprop" (ssget ) "" "CA" "! ! métré - Cotation Décompté" "") Choix d'un icône de bouton Rajout de cet icône/commande dans la barre d'outils souhaitée =>Appliquer=>Ok 2 Citer ***********************Rien ne sert de courrir, il faut partir à point.
Messages recommandés