Aller au contenu

Garder le nom d'un objet après modification de celui-ci


Frog

Messages recommandés

Bonjour à toutes et à tous,

Je veux traiter un objet sélectionné à l'écran.

Pour cela, j'utilise "ssget" et j'obtiens son "nom"

Exemple : (setq obj (ssget c:)) donne !obj => ab

Ligne suivante (command "_meshsmooth" obj "" "")

L'entité devient b1.

Mais j'ai encore des opérations à effectuer dessus et je ne veux pas devoir sélectionner à nouveau l'objet à l'écran.

Par la suite, l'objet va être décomposé, il y aura donc plusieurs entités et je ne veux toujours pas devoir faire une sélection à l'écran.

Comment faire ?

 

D'avance merci.

 

Frog

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Peux tu préciser quel logiciel utilises-tu, parce que dans AutoCAD (setq obj (ssget c:)) ne donne rien (renvoie nil).

Sinon, si je comprends à peu près la demande, ce que tu appelles le "nom" serait le ENAME (nom d'entité) de l'objet.
Le ENAME est un identifiant unique dans la session, il est affecté par AutoCAD (ou autre) à chaque nouvel objet créé. Il est donc impossible de le modifier.

Dans ton exemple, la commande _meshsmooth crée un nouvel objet (MAILLAGE) et lui affecte un nouvel identifiant.

il y a 24 minutes, Frog a dit :

Mais j'ai encore des opérations à effectuer dessus et je ne veux pas devoir sélectionner à nouveau l'objet à l'écran.

Pour ne pas avoir à sélectionner à l'écran le nouvel objet, tu peux utiliser la fonction entlast qui revoie l'identifiant (ENAME) de la dernière entité créée.

il y a 24 minutes, Frog a dit :

Par la suite, l'objet va être décomposé, il y aura donc plusieurs entités et je ne veux toujours pas devoir faire une sélection à l'écran.

Dans ce cas, il faut stocker le ENAME renvoyé par entlast avant de lancer la décomposition et retrouver les ENAMEs des nouvelle entités créées dans une boucle while avec la fonction entnext.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Encore un tout grand merci,

 

Je vais essayer de comprendre et mettre en application.

J'utilise Autocad 2023.

Si j'écris (setq obj (ssget c:)) dans l'invité de commande, Autocad me propose de sélectionner un objet.

Mais si je le fais plusieurs fois, la valeur de la variable obj change à chaque fois.

Ce qui ne me semble pas nécessairement problématique dans ce cas vu que l'objet va évoluer et la valeur ENAM va changer.

 

Bàv,

 

Frog

Lien vers le commentaire
Partager sur d’autres sites

il y a une heure, Frog a dit :

Si j'écris (setq obj (ssget c:)) dans l'invité de commande, Autocad me propose de sélectionner un objet.

À moins qu'une valeur n'ait été affectée au symbole 'c:' avec setq :

(setq c: ...)

(ssget c:) est équivalent à (ssget nil) qui est équivalent à (ssget)

Dans tout les cas cette expression propose de sélectionner des objets et renvoie un jeu de sélection (ou nil).

Concernant la sélection des entités dans AutoCAD, je te recommande vivement de lire (entre autres) le chapitre 16 de Introduction à AutoLISP (sur cette page) et les sections Autolisp\Fonctions par genres\Entités graphiques et Autolisp\Fonctions par genres\Jeux de sélection sur le site da-code.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité