Aller au contenu

selection aprés commande


Messages recommandés

Posté(e)

comment récupérer le jeu de selection sur lequel on a travaillé dans un lisp?

 

exemple:

 

(defun c:attsum (/ sset sum i l name entDef)
 (setq
   sset (ssget ":E")	; Everything in Aperture
   sum	 0
 )
 (if sset
   (progn
     (setq
i 0
l (sslength sset)
     )
     (while (< i l)
(setq name (ssname sset i)
      loop T
)
;; Boucle sur les attributs
(while loop
  (setq	name   (entnext name)
	entDef (entget name)
  )
  (if (and (= (cdr (assoc 0 entDef)) "ATTRIB")
	   (= (cdr (assoc 2 entDef)) "VALEUR BLOC")
      )
    ;; On a trouvé l'attribut d'étiquette VALEUR BLOC
    (setq sum  (+ sum (atof (cdr (assoc 1 entDef))))
	  loop nil
    )
  )
  (if (= (cdr (assoc 0 entDef)) "SEQEND")
    (setq loop nil)
  )				; Fin de séquence, on termine la boucle
)
;; Passe à l'insertion de bloc suivante
(setq i (1+ i))
     )
     (prompt (strcat "Somme : " (rtos sum)))
   )
 )
 (princ)
)

 

le lisp marche bien sauf que j'aimerai récupérer la selection de départ et la commande autocad 'select p' ne me redonne pas la main pour passer d'autres commandes.

Posté(e)

j'ai du mal à comprendre la subtilité du lisp encore...je sais que mon jeu de selection se trouve dans SSET, ce que je ne comprends pas c'est pourquoi ma routine lisp ne me redonne pas la main sur le jeu de selection.

 

Je ne comprends pas ce que tu veux dire par refaire une boucle, pourquoi faire?

Posté(e)

Là, tu mets bien ta variable i à 0 et tu détermines le nombre d'éléments sélectionnés

(setq
i 0
l (sslength sset)
     )

 

Et ici, tu parcours bien le jeu de sélection dans une boucle while (tant que la valeur de i est inférieur à la valeur de l)

(while (< i l)
(setq name (ssname sset i)
      loop T
)

 

A croire que tu recopies des bouts de code sans chercher à comprendre :casstet:

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Que cherches-tu à faire toi ?

ssset n'est accessible que pendant l'exécution du LISP, la réponse donnée par Patrick_35 est valable si tu veux modifier le LISP (ajouter des expressions à ce LISP)

 

Si tu veux utiliser le jeu de sélection après l'exécution du LISP, ssget n'est plus accessible (nil), il faut donc utiliser le jeu de sélection précédent, soit : (ssget "_P") en LISP.

Si tu veux sélectionner/gripper le jeux de sélection précédent, il faut utiliser l'expression que j'ai donné dans un autre post :

(sssetfirst nil (ssget "_P"))

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

Posté(e)

oui ça je l'avais compris, je sais que "sset" est une variable local et que en dehors de la fonction, c'est inutile.

 

que j'utilise:

(sssetfirst nil (ssget "_P")) ou (sssetfirst nil sset)

dans ma fonction cela revient au même, je n'ai pas les poignées.

en tous cas elles ne sont pas visibles, que dois je faire pour que le gripset

 

J'ai constaté que le regen me les ressuscites mais c'est un peu lourd comme manipulation.

 

pourquoi mes grip handles sont off ? mon pickset (sset) est défini.

 

 

 

 

 

Posté(e)

je ne sais pas si j'ai bien compris

mais bon

 

exemple :

 

dans une routine lisp

(defun c:routine()

(setq sset (ssget))

)

a la fin de la routine, la selection"sset" est toujours en mémoire...

 

donc on peut l'utiliser avec une commande

ex .

 

effacer_!sset_

 

le point d'exclamation rappelle la variable

a partir du moment ou il n'y a pas eu un nil dessus

et quelle ne soit pas la declarer la

 

(defun c:attsum (/sum i l name entDef)

 

j'espère que je ne suis pas hors sujet[Edité le 22/7/2010 par capde06]

 

[Edité le 22/7/2010 par capde06]

Vous fîtes ce que vous pûtes

et vous m'épatâtes !!!!

Posté(e)

GRIPS et GRIPOBJLIMIT ne changent rien.

 

J'ai enfin trouvé ce qui n'allait pas, au lieu de (ssget ":E"), j'ai utilisé (ssget "_I"), le cumul marche bien et me redonne la selection correctement.

 

I Implied selection (objects selected while PICKFIRST is in effect).

 

plus besoin de (sssetfirst nil sset)

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é