Aller au contenu

selection d\'objetS copié....


Messages recommandés

Posté(e)

m'énerve......

De choses que je pense simple mais je prend la tête!!!!

....suite de mes problèmes....

En lisp je copie une selection d'objetS (notez le S) d'un point à un autre....

Ensuite Je n'arrive plus à atteindre ces objeS copiés :

(ssget "L") marche pas

le "d" (dernier) dans les commandes AutoCAD prend UN SEUL objet.

le "p" (précedent) attrappe ma selection précedente, et pas les "nouveaux" objets...

 

(setq sel (ssget))

(command "_copy" sel "" (setq pA (getpoint)) pause)

(setq pB (getvar "lastpoint"))

(setq OBjs (ssget "L"))

(command "_erase" OBjs "" "")

 

Alors il est tard, mais avant de me prendre le choux je voudrais savoir si ce qui me vient à l'idée serait la bonne méthode et la plus "simple":

je compte le nombre d'objet dans ma selection etc...:

 

(setq NbObjs (sslength sel))

(repeat NbObjs (command "_erase" "d" ""))

 

.... c'est tiré par les cheveux non ???

 

bon... à demain et merci

 

 

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

Posté(e)

Salut

 

Une petite routine pour copier des objets

(defun copier_obj(/ doc pap ent js n pt1 pt2 sel)
 (if (setq sel (ssget))
   (if (setq pt1 (getpoint "\nPoint de base : "))
     (if (setq pt2 (getpoint pt1 "\nDestination : "))
       (progn
         (vl-load-com)
         (setq doc (vla-get-activedocument (vlax-get-acad-object)))
         (if (eq (getvar "tilemode") 1)
           (setq pap (vla-get-modelspace doc))
           (setq pap (vla-get-paperspace doc))
         )
         (vla-startundomark doc)
         (setq n 0)
         (while (ssname sel n)
           (setq js (cons (ssname sel n) js) n (1+ n))
         )
         (setq js (vlax-safearray-fill 
                    (vlax-make-safearray vlax-vbObject (cons 0 (1- (length js))))
                    (mapcar 'vlax-ename->vla-object (reverse js))))
         (setq sel (vla-copyobjects doc js pap))
         (foreach ent (vlax-safearray->list (vlax-variant-value sel))
           (vla-move ent (vlax-3d-point pt1) (vlax-3d-point pt2))
         )
         (vla-endundomark doc)
         (setq sel (vlax-safearray->list (vlax-variant-value sel)))
         (setq js (ssadd))
         (foreach ent sel
           (ssadd (vlax-vla-object->ename ent) js)
         )
       )
     )
   )
 )
)

 

Tu fais un (setq js (copier_obj)) et ton js est le jeu de sélection des objets copiés

 

@+

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)

Salut,

 

Si tu veux juste récupérer la "copie" du jeu de sélection, tu peux inverser la manoeuvre, copier le jeu de sélection sans déplacement, puis le déplacer :

 

(command "_.copy" (setq sel (ssget)) "" "" "")
(command "_.move" sel "" (setq pA (getpoint)) pause)
(setq pB (getvar "lastpoint")) 
(command "_.erase" sel "")

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é