Morgul Posté(e) le 6 novembre 2007 Posté(e) le 6 novembre 2007 Bonjour à vous, Comment faire pour retrouver la présentation contenant un bloc dont une valeur d'attribut est connue ? Je pense à une méthode mais peut-être n'est-ce pas la bonne ?Peut-être y-a-t-il plus simple ? 1 - Lister tous les blocs du fichier 2 - Faire une boucle sur chacun des blocs pour balayer les valeures d'attribut et vérifier s'il contient la valeure connue 3 - Balayer le bloc pour retrouvé le code 410 D'avance merci pour votre aide. Il n'y a pas d'homme cultivé, il n'y a que des hommes qui se cultivent. Maréchal Foch
(gile) Posté(e) le 6 novembre 2007 Posté(e) le 6 novembre 2007 Salut, Je ferais plutôt en sens inverse : - récupérer la liste des présentations (layoutlist)- dans chacune, sélectionner les blocs pour y chercher la valeur de l'attibut. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Morgul Posté(e) le 6 novembre 2007 Auteur Posté(e) le 6 novembre 2007 Salut Gile, Oui, c'est vrais c'est plus simple ! Tu as une nouvelle fois raison.Contrairement à moi tu as vraiment l'esprit logique. Merci encore.A+. Il n'y a pas d'homme cultivé, il n'y a que des hommes qui se cultivent. Maréchal Foch
(gile) Posté(e) le 6 novembre 2007 Posté(e) le 6 novembre 2007 En fait non, je pense que je suis un peu tordu, c'est plus simple de sélectionner tout les blocs qui ne sont pas dans l'espace objet et de retrouver la valeur de l'attribut. 2 petits exemples, l'argument est la valeur de l'attribut à retrouver. Test1 : par la liste des présentations (defun test1 (val / lst ret ss n bl att) (setq lst (layoutlist)) (while (and lst (not ret)) (if (and (setq ss (ssget "_X" (list '(0 . "INSERT") (cons 410 (car lst))))) (setq n -1) ) (while (and (not ret) (setq bl (ssname ss (setq n (1+ n))))) (if (and (= 1 (cdr (assoc 66 (entget bl)))) (setq att (entnext bl)) ) (while att (if (= val (cdr (assoc 1 (entget att)))) (setq ret (car lst)) ) (setq att (entnext att)) ) ) ) ) (setq lst (cdr lst)) ) ret ) test2 : en sélectionnat tous les blocs (defun test2 (val / n ss ret bl att) (setq n -1) (if (setq ss (ssget "_X" '((0 . "INSERT") (410 . "~Model")))) (while (and (not ret) (setq bl (ssname ss (setq n (1+ n)))) ) (if (and (= 1 (cdr (assoc 66 (entget bl)))) (setq att (entnext bl)) ) (while att (if (= val (cdr (assoc 1 (entget att)))) (setq ret (cdr (assoc 410 (entget att)))) ) (setq att (entnext att)) ) ) ) ) ret ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Morgul Posté(e) le 6 novembre 2007 Auteur Posté(e) le 6 novembre 2007 Merci, Je vais tester tout ça.A+. Il n'y a pas d'homme cultivé, il n'y a que des hommes qui se cultivent. Maréchal Foch
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