Aller au contenu

Messages recommandés

Posté(e)

Bonjour à tous :)

 

Je suis entrain de m'initier au joie d'Autolisp mais j'avoue que c'est pas evidant...

Voilà,je pense avoir compris la difference entre entsel qui nomme une entité unique et ssget qui designe plusieurs entité sous un meme nom mais j'avoue que lorsque j'essaie d'utiliser sslenght je n'y arrive pas :P

Si je crée par exemple 3 entités graphique tel qu'un cercle, un rectangle et une ellispe, que je tape (setq sg (ssget)), que je selectionne mes 3 entités et que je tape (sslenght sg),j'ai le message d'erreur suivant:

 

Commande: (sslenght sg)

; erreur: no function definition: SSLENGHT

 

 

Quelqu'un aurait il la gentillesse de me dire ou est mon erreur s'il vous plait?

Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson

Posté(e)

Salut,

 

L'interpréteur LISP ne supporte pas les fautes d'orthographe.

 

Essaye sslength à la place de sslenght.

 

Un petit conseil, utilise l'éditeur Visual LISP inclus dans AutoCAD, les fonctions AutoLISP prédéfinies y sont affichées en bleu ce qui indique immédiatement si l'orthographe de la fonction est bonne.

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

Posté(e)

Effectivement ça fonctionne mieux avec la bonne orthographe ;) .Il faut que j'apprenne a utilser l'editeur visual lisp

Gile je sais que j'abuse mais peux tu m'expliquer le principe de la fonction ssname?

Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson

Posté(e)

Bonsoir,

 

Pour faire court!

 

(ssname jeu-de-sélection index) retourne le nom de l'entité d'un jeu de sélection de l'index concerné.

Ce nom d'entité ne peut être exploité qu'avec une fonction comme (entget), ou avec (vlax-ename->vla-object) pour accéder à la définition de celle-ci

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Salut,

 

Je vais partir d'un peu plus loin (et faire un peu plus long...).

ssget retourne un objet de type PICKSET pour AutoLISP (autrement dit un jeu de sélection). Cet objet n'est pas seulement une collection d'entités (type ENAME) sélectionnées mais contient aussi des informations sur la façon dont ces objets ont été sélectionnés.

 

La plupart du temps, c'est seulement la collection d'objets sélectionnés qui nous intéresse.

La fonction ssname sert précisément à accéder à chacune de ces entités.

 

Comme la plupart des fonctions LISP*, ssname requiert des arguments (ou paramètres) et, comme toutes, retourne une valeur.

Les arguments requis sont, dans l'ordre, un jeu de sélection (tel que retourné par ssget) et un nombre entier : l'indice de l'entité dans le jeu de sélection (le premier élément a un indice 0).

 

Donc pour accéder aux entités contenues dans le jeu de sélection, il faut le "parcourir" avec une fonction itérative (repeat ou while) en incrémentant l'index jusqu'à atteindre la dernière entité. C'est là que la fonction sslength qui retourne le nombre d'entités contenues dans le jeu de sélection va servir.

 

 

* Voir ce sujet pour les bases de la syntaxe AutoLISP

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

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é