Aller au contenu

Traiter une selection


Messages recommandés

Posté(e)

Bonjour...

Dans la série "petit trucs tordu", j'ai un nouveau problème :

Grâce à vous, depuis mon récent aprentissage de l'utilisation des filtres dans ssget, je me suis ammusé à créér un petit outil me permettant de ressortir un (groupe) de bloc précis d'une selection...

 (defun c:rrr ()
(princ "\n------------------------------\n Sélection d'un groupe de blocs :")
(setq sel (ssget ":L" '((0 . "INSERT")))) 
(setq bloc (getstring "\n Entrez le nom du bloc à Ressortir ou < selec >: "))
(if (= bloc "")(progn (while (not (and (setq bloc_sel (entsel "\nSélectionnez le bloc à Ressortir: ")) 
     (= (cdr (assoc 0 (entget (car bloc_sel)))) "INSERT"))))
 		(setq bloc (cdr (assoc 2 (entget (car bloc_sel)))))))
(ssget "_P" (list (cons 2 bloc)))
(princ "\n--------------------------------------------\n
choisir une action à réaliser (copier,supprimer ...) puis taper p")
 (princ)

)

mais en fait, j'étais parti pour éviter ce "choisir une action à réaliser (copier,supprimer ...) puis taper p" en faisant un

 (command pause (ssget "_P" (list (cons 2 bloc))) "" pause pause pause)

... ce qui est certainemenr n'importe quoi, vu que ça ne fonctionne pas...

 

Donc, ma question est de savoir si il est possible de faire finir un programme lisp en faisant faire une selection, puis en revenant au commande d'autocad normale (afin qu'il puisse traiter la selection comme selection nom/verbe)

Je sais, je pourrais "étoffer" mon lisp en proposant toutes ces actions et en les traitant en lisp, mais je trouve ça un peu lourd...

 

merci d'avance

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Un exemple rapide:

Sélectionner en mode nom/verbe (suivant la valeur de "CMDACTIVE") toutes les entités ayant la couleur du calque par défaut dans l'espace courant.

 

((lambda ( / js)
(if (zerop (getvar "pickfirst")) (setvar "pickfirst" 1))
(setq js
	(ssget "_X"
		(list
			(cons 67 (if (eq (getvar "CVPORT") 2) 0 1))
			(cons 410 (if (eq (getvar "CVPORT") 2) "Model" (getvar "CTAB")))
			(cons 62 (acad_colordlg 256 T))
		)
	)
)
(if (zerop (getvar "cmdactive"))
	(sssetfirst nil js)
	js
)
))

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

Posté(e)

Gé - Nial !!!

merci beaucoup, j'apprends donc une nouvelle commande :

 (sssetfirst gripset[pickset]) 

... j'avoue ne pas bien comprendre ce qu'il raconte dans l'aide à ce sujet, mais je vais bûcher ça !!!

 

donc, j'arrive à ça :

 (defun c:rrr ()
(if (zerop (getvar "pickfirst")) (setvar "pickfirst" 1)) ;;; modif var
(princ "\n------------------------------\n Sélection d'un groupe de blocs :")
(setq sel (ssget ":L" '((0 . "INSERT")))) 
(setq bloc (getstring "\n Entrez le nom du bloc à Ressortir ou : "))
(if (= bloc "")(progn (while (not (and (setq bloc_sel (entsel "\nSélectionnez le bloc à Ressortir: ")) 
     (= (cdr (assoc 0 (entget (car bloc_sel)))) "INSERT"))))
 		(setq bloc (cdr (assoc 2 (entget (car bloc_sel)))))))
(if (zerop (getvar "cmdactive"))
(sssetfirst nil (ssget "_P" (list (cons 2 bloc))))
 )
)

 

et c'est ni-ckel !!!

Merci encore !!!

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

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é