yusukens82 Posté(e) le 26 mai 2021 Posté(e) le 26 mai 2021 Bonjour, Je cherche une astuce pour effacer l’élément d'origine après avoir copier ses propriétés. je pensais à quelque chose de simple comme : (defun c:CP2 () (command "_matchprop" ) (command "_erase" ss "") ) mais vous vous doutiez bien que ça ne fonctionne si quelqu'un peut m'aider ? en vous remerciant par avance,
Luna Posté(e) le 26 mai 2021 Posté(e) le 26 mai 2021 Coucou, Pour cela j'ai quelques questions : à quoi correspond ss ? Quand et comment as-tu déclarer cette variable ? Si je comprends bien, tu as un objet source et un objet cible, et une fois que tu as effectué la commande "_MATCHPROP" sur l'objet cible depuis l'objet source, tu veux supprimer l'objet source ? Bisous, Luna
Maxime063 Posté(e) le 26 mai 2021 Posté(e) le 26 mai 2021 Bonjour, Ce code devrait faire l'affaire (defun c:prop ( / jeusel1 jeusel2 ) (setq jeusel1 (ssget ":S") jeusel2 (ssget) ) (command "_MATCHPROP" jeusel1 jeusel2 "") (command "_erase" jeusel1 "") ) Amicalement
didier Posté(e) le 26 mai 2021 Posté(e) le 26 mai 2021 Bonjour @Maxime063 Je me questionne sur l'utilité de copier des propriétés depuis un jeu de sélection. Une sélection d'entité je veux bien comprendre, donc soit on met entsel soit on met des filtres dans le ssget pour ne sélectionner qu'une seule entité (tu as besoin d'aide ?) Puisque tu débutes prends maintenant les bons réflexes et donne le nom des commandes en langage international "_MATCHPROP" sera plus propre. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Maxime063 Posté(e) le 27 mai 2021 Posté(e) le 27 mai 2021 Bonjour @didier En effet, "_MATCHPROP" est bien plus intéressant, j'y ai pensé qu'une fois envoyé. J'ai simplement pensé qu'avec le (ssget ":S") suffit pour ne sélectionner qu'une seule entité, et n'ayant pas d'informations sur le nombre d'entités qui doivent recevoir les propriétés, j'ai pensé judicieux (peut-être à tord) de faire ça, mais j'avoue ne même pas avoir pensé au entsel. Ps : J'ai édité le code avec "_MATCHPROP"
Luna Posté(e) le 27 mai 2021 Posté(e) le 27 mai 2021 Coucou, Petite correction @Maxime063, l'option ":S" ne permet pas de ne sélectionner qu'une seule entité !! Elle permet qu'une seule sélection, mais l'utilisateur peut utiliser n'importe quel mode de sélection !! Donc si on fait une sélection en capture par exemple, il est tout à fait possible de sélectionner plusieurs entités !! Si tu veux conserver un fonctionnement similaire à la fonction (entsel), il s'agit de l'addition des méthodes ".+", ":E" et ":S" s'écrivant ainsi "_+.:E:S". Cette écriture permet de simuler un (entsel), bien que dans cette situation, (entsel) serait probablement préférable car on peut afficher un message :3 Pour info : - "+." permet d'afficher le curseur en mode sélection d'objet (le petit carré) - ":E" permet de n'autoriser que la sélection des objets se trouvant sous le curseur - ":S" permet de n'autoriser qu'une seule sélection, quelque soit le mode de sélection choisi (capture, fenêtre, objet, ...) - "_" permet de s'assurer que la version des modes de sélection utilisés se font en anglais, quelque soit la langue d'AutoCAD (format international) Après je n'avais pas donner de réponse directement car je m'inquiètes de la déclaration de sa variable 'ss' qui ne semble pas avoir été déclarée dans sa commande (ni définie localement)...Donc je voulais essayer de corriger cela pour qu'il ne fasse pas d'erreurs les prochaines fois ^^" Bisous, Luna
Maxime063 Posté(e) le 27 mai 2021 Posté(e) le 27 mai 2021 Merci pour cette précision @Luna, En effet, je n'ai pas pensé qu'on pouvait faire une capture... c'est toute la complexité de la chose, se mètre dans la peau de l'utilisateur sans prendre en compte ses propres habitudes. En tout cas merci pour cette précision, du coup ci-dessous le code qui sera plus claire et plus fonctionnel. (defun c:prop ( / jeusel1 jeusel2 ) (setq jeusel1 (entsel "\nChoix de l'entitée de référence\n") jeusel2 (ssget) ) (command "_MATCHPROP" jeusel1 jeusel2 "") (command "_erase" jeusel1 "") ) Amicalement.
yusukens82 Posté(e) le 27 mai 2021 Auteur Posté(e) le 27 mai 2021 Bonjour à vous tous, Dessolé si je n'ai pas été précis dans ma requête, je n'aurai peut être pas du mettre ce topic dans la rubrique "débuter en LISP" Si je n'ai pas déclaré de variable 'ss' c'est tout simplement parce que j'ai récupéré ce bout de code sur une autre routine sans savoir exactement la signification de chaque mot. Le but étant de récupérer les propriétés de la première sélection vers une seconde sélection puis d'effacer la sélection source. Les 2 propositions de Maxime063 fonctionne merveille, merci pour la réécriture plus propre. Merci
Luna Posté(e) le 27 mai 2021 Posté(e) le 27 mai 2021 Coucou, 1 minute ago, yusukens82 said: je n'aurai peut être pas du mettre ce topic dans la rubrique "débuter en LISP" Je pense justement que tu es au bon endroit :3 Et cela montre également que copier partiellement ne permet pas d'apprendre 😉 Si tu as envie d'apprendre, alors je n'aurais aucun soucis à te guider et te donner quelques bases, comme par exemple les déclarations de variables et les différents types d'atomes ou listes. Tu comprendrais plus facilement que 'ss' est une variable, et que si cette dernière n'est déclarée nulle part, alors c'est qu'elle n'existe pas (appelée nil en AutoLISP, le contraire T signifiant que quelque chose "existe"). Pour être honnête, je doute fortement que se soit une bonne idée de faire du LISP sans en maîtriser les bases...Cela conduira forcément à des problèmes et les bases sont abordables à quiconque veut bien se donner la peine d'écouter 🙂 Donc si jamais tu as des questions, tu es au bon endroit et je te suggères ces liens qui sont fait pour apprendre, quelque soit le niveau de chacun : - Da-Code (Site de didier) - Introduction AutoLISP (Site de (gile)) Ce sont d'excellentes références (en français) qui permettent de maîtriser les bases très rapidement. Après libre à toi de grapiller des bouts de codes, mais avec les bases, c'est mieux ^^" PS : ce n'est pas un reproche mais un simple conseil avisé 😉 Bisous, Luna 1
yusukens82 Posté(e) le 27 mai 2021 Auteur Posté(e) le 27 mai 2021 Bonjour Luna, Moi qui utilise à longueur de temps le lisp, j’ai essayé à plusieurs reprises de débuter en lisp. A chaque fois j’abandonne au bout de quelques jours. J’en ai conclus que ma force n’est pas d’en créer mais de les utiliser. Il n’en reste pas moins que j’essaye dès les développer avec mes maigres compétences. Merci pour ta proposition sympathique qui me va droit au cœur Bisous
Maxime063 Posté(e) le 27 mai 2021 Posté(e) le 27 mai 2021 Bonjour @yusukens82, Il faut aussi savoir se lancer, les 2 références que luna à donné m'ont effectivement fait commencer, et comme tu le voit, la communauté est là pour aider. Il y à 1 an je ne connaissait rien au lisp, mais une bonne connaissance d'autocad, et avec le temps, à force de s'imprégné de l'expériences des membres on arrive à progresser. Personne ne vas te juger parce que tu essais de faire un bout de code toi-même qui ne fonctionne pas. par contre, le copié collé n'aide en rien à l'apprentissage. Amicalement. 1 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