chris_mtp Posté(e) le 18 juillet 2010 Posté(e) le 18 juillet 2010 Bonjour à tous, J'essaie de faire une sélection d'objets copiés à partir de d'objets origines.Comment puis je faire ?COncrétement, en lisp avec le code (command "_.copy" ss1 "" ptx ptk) je copie des objets mais comment faire une sélection de ces mêmes objets copiés ?Merci par avance de votre aide.John. [Edité le 18/7/2010 par chris_mtp]
(gile) Posté(e) le 18 juillet 2010 Posté(e) le 18 juillet 2010 Salut, Tu commences à toucher ici les limites que pose l'utilisation de command en LISP.Passer par les commandes natives évite d'avoir à se préoccuper de tout ce qui se passe "en dessous" mais "cache" aussi tout ça. Une méthode consiste à stocker la dernière entité créée (avec entlast) avant de faire la copie et de récupérer toutes les entités créées après (avec entnext). (setq ent (entlast) ; dernière entité créée ss1 (ssget) ; jeu de sélection (utilisateur) ss2 (ssadd) ; jeu de sélection vide ) (command "_.copy" ss1 "" pause pause) ; copie des objets sélectionnés (while (setq ent (entnext ent)) ; boucle sur toutes les entités créees après (ssadd ent ss2) ; et les ajoute à au jeu de sélection vide ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Tramber Posté(e) le 18 juillet 2010 Posté(e) le 18 juillet 2010 Bonjour ! (setq vblo(Vla-Get-Block (vla-get-ActiveLayout(vla-get-activedocument (vlax-get-acad-object))))) (setq num(vla-get-count vblo)) (command "_.copy" ss1 "" pause pause) (setq num2(vla-get-count vblo)) (setq ss2(ssadd) compt 1) (repeat(- num2 num) (setq ss2(ssadd (vlax-vla-object->ename (vla-item vblo(- num2 compt)))ss2)) (setq compt(1+ compt)) ) Ici, c'est l'équivalent en Vlisp.Un peu plus long à écrire ! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
chris_mtp Posté(e) le 18 juillet 2010 Auteur Posté(e) le 18 juillet 2010 MErci pour vos réponses.J'avais essayé avec ssadd mais ca me faisait n'importe quoi car je n'avais pas commencer à partir de la dernière entité crée avant la copie.MErci Tramber mais le vlisp je ne maitrise pas encore, j'ai adopté celle de Gile.J'ai essayé quand même ta fonction elle marche nickel.Merci encore.John
Tramber Posté(e) le 18 juillet 2010 Posté(e) le 18 juillet 2010 C'est pour là culture.Je regrette que notre webmaster de l'époque n'ait pas plus clairement indiqué où poster les messages autolisp et les messages concernant VisualLisp. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 19 juillet 2010 Posté(e) le 19 juillet 2010 Salut Un autre exemple en vlisp (setq doc (vla-get-activedocument (vlax-get-acad-object))) (setq sel (ssget)) (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (setq lst (cons ent lst)) ) (vla-delete sel) (setq cpo (vla-copyobjects doc (vlax-safearray-fill (vlax-make-safearray vlax-vbObject (cons 0 (1- (length lst)))) lst ) (if (eq (getvar "cvport") 1) (vla-get-paperspace doc) (vla-get-modelspace doc) ) ) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Tramber Posté(e) le 19 juillet 2010 Posté(e) le 19 juillet 2010 Du Deepcloning !Plus difficile encore :cool: Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant