Aller au contenu

Lancer LISP avec l'entité précédente


laurentpo

Messages recommandés

Bonjour à tous,

J'utilise un lisp qui me permet d'écrire, dans un fichier, les coordonnées des points de passage d'une polyligne.

Actuellement ce lisp utilise le dernier élément créer.

Je souhaiterais pouvoir lancer le même lisp mais cette fois sur l'entité précédemment modifiée (comme lorsque l'on utilise P).

Actuellement mon code commence ainsi:

 

(defun c:xypolyv ()

(setq ent (entlast))

(setq bdent (entget ent))

(setq typent (cdr (assoc 0 bdent)))

(if (= typent "LWPOLYLINE")

(progn

 

Je pense qu'il faut remplacer entlast mais je ne parviens pas à trouver par quoi, d'où ma demande d'aide.

 

Merci.

 

Laurent

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

voir l'aide qui correspond à la fonction (ssget ...) et toutes celles qui commencent par ss comme selection set (ou jeu de sélection).

 

Je souhaiterais pouvoir lancer le même lisp mais cette fois sur l'entité précédemment modifiée (comme lorsque l'on utilise P).

 

Lorsqu'on répond P à l'invite "choix des objets", on ne récupère pas forcément une seule entité mais un jeu de sélection qui peut contenir une ou n entités.

 

On peut écrire

 

(setq js (ssget "_p"))

 

qui mettra dans la variable js le jeu de sélection précédent. js contiendra nil s'il n'y a pas de jeu de sélection précédent. On peut utiliser ssname pour, par exemple, récupérer le nom de la première entité dans js en écrivant (setq ent (ssname js 0)). On commence à compter à partir de 0.

 

(setq js (ssget "_p"))
(if js
 (setq ent (ssname js 0))
 (progn
   (alert "Pas de jeu de sélection précédent.")
   (exit)
 )
)

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

Mais en définitive, cela ne serait-il pas plus simple de remplacer (entlast) par (car (entsel)) en demandant à l'utilisateur de pointer la polyligne qui l'intéresse, qu'elle soit la dernière créée ou la dernière modifiée ou une autre quelconque ?

 

Cela marcherait dans tous les cas sans demander la lune à l'utilisateur.

 

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Merci beaucoup pour la rapidité de votre réponse.

 

J'ai mis en place la première solution proposée et cela fonctionne parfaitement.

 

Effectivement la solution de demander à l'utilisateur de choisir l'entité serait idéale mais je ne parviens pas encore à trouver la bonne syntaxe.

 

Laurent.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Merci beaucoup pour la rapidité de votre réponse.

J'ai mis en place la première solution proposée et cela fonctionne parfaitement.

Effectivement la solution de demander à l'utilisateur de choisir l'entité serait idéale mais je ne parviens pas encore à trouver la bonne syntaxe.

Laurent.

 

à la place de

(setq ent (entlast))

 

on peut mettre

(setq ent (car (entsel)))

 

la fonction (entsel) retourne une liste dont le premier élément est le nom de l'entité choisie et dont le second élément est la liste des coordonnées du point utilisé pour la sélection. D'où l'utilisation de la fonction (car...), qui retourne le premier élément d'une liste, compte tenu que c'est le nom de l'entité qui nous intéresse.

 

A noter qu'avec (entsel), on peut aussi "personnaliser" le message affiché

(entsel "\nVeuillez choisir une polyligne : ")

 

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

Génial

J'ai fait mon service militaire au 1er régiment de génie, ça doit venir de là mon côté génial, sans doute ! Je plaisante... J'étais bien au 1er RG mais en tant que VFI, donc mis à disposition du ministère du travail, de l'emploi et de la formation professionnelle, qui m'a ensuite mis à disposition du ministère de l'agriculture, plus particulièrement d'un lycée agricole. C'était génial, je n'allais à la caserne que pour toucher la solde de 444 francs...

J'ouvre une parenthèse :

c'était un peu un service civique avant l'heure et je profite de la tribune pour encourager tous les jeunes de 16 à 25 ans à se lancer pour effectuer une mission au service de l'intérêt général. Rien à voir avec le lisp ? Si, c'est au cours de cette mission que j'ai découvert ce langage de programmation et son génial inventeur.

Je referme la parenthèse.

 

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

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é