phil2 Posté(e) le 4 avril 2013 Posté(e) le 4 avril 2013 Bonjourj'ai recuperer ce lisp fait par didier qui permet de mettre le Bloc en Z en fonction de son attributmais j'ai un bug sur certains blocs avec ce type de messages ; erreur: type d'argument incorrect: lselsetp nil quelqu'un aurait il une solutions ?????? (defun c:tcpointz (/ jeusel n ent altval pospt tempo) (setq jeusel (ssget (list (cons 0 "INSERT") (cons 2 "TCPOINT") ))) (setq n 0) (repeat (sslength jeusel) (setq ent (ssname jeusel n)) (if (= "ALT" (cdr (assoc 2 (entget (entnext (entnext ent)))))) (progn (setq altval (cdr (cons 1 (cdr (assoc 1 (entget (entnext (entnext ent))))))) pospt (cdr (assoc 10 (entget ent))) tempo (subst (cons 10 (list (car pospt) (cadr pospt) (atof altval))) (cons 10 pospt) (entget ent) ) ) (entmod tempo) (entupd ent) (setq n (+ 1 n)) ) ) ) )
-Olivier- Posté(e) le 4 avril 2013 Posté(e) le 4 avril 2013 Bonjour phil2, - Le bloc ne serait pas un bloc dynamique ?- Le nom du bloc est bien TCPOINT ?Olivier
lecrabe Posté(e) le 4 avril 2013 Posté(e) le 4 avril 2013 Hello SVP tu essayes cette excellente routine BLOC-ALT de notre "indispensable" Gilles ... Chargement par APPLOAD Commande au clavier : BLOC-ALT Vous faites un CLIC (pour le selectionner) sur l'Attribut DU Bloc (Symbole) contenant la valeur numerique de l'Altitude ou Elevation et automatiquement TOUS les Blocs (Symboles) changent d'Altitude ou Elevation ! Rappel : si jamais votre Attribut (de Bloc) concerne est INVISIBLE alors vous faites un ATTECRAN AC (pour ACtif)ainsi TOUS les Attributs deviennent Visibles donc vous pouvez le selectionner pour la routine BLOC-ALT et apres execution de la Routine, vous faites un ATTECRAN N (pour Normal) lecrabe ;; Par GC le 13/03/2008 ;; Commande : BLOC-ALT ;; Mettre les blocs a l'altitude d'un attribut (vl-load-com) (defun c:bloc-alt (/ att elst blk tag ss n ins) (if (and (setq att (car (nentsel "\nSelectionnez l'attribut \"altitude\": "))) (setq elst (entget att)) (= (cdr (assoc 0 elst)) "ATTRIB") (setq blk (cdr (assoc 330 elst))) (setq name (cdr (assoc 2 (entget blk)))) (setq tag (cdr (assoc 2 elst))) (setq ss (ssget "_X" (list '(0 . "INSERT") (assoc 2 (entget blk))))) (setq n -1) ) (progn (while (setq blk (ssname ss (setq n (1+ n)))) (setq elst (entget blk) ins (cdr (assoc 10 elst)) att (entnext blk) ) (while (and att (= (cdr (assoc 0 (entget att))) "ATTRIB")) (if (= (cdr (assoc 2 (entget att))) tag) (entmod (subst (list 10 (car ins) (cadr ins) (atof (cdr (assoc 1 (entget att)))) ) (assoc 10 elst) elst ) ) ) (setq att (entnext att)) ) ) (vl-cmdf "_.attsync" "_n" name) ) ) (princ) ) Autodesk Expert Elite Team
phil2 Posté(e) le 4 avril 2013 Auteur Posté(e) le 4 avril 2013 REEffectivement le nom du bloc n'etait pas TCPOINTune fois renomé ca fonctionnemerci a toi OLIVIER Merci LECRABE Je teste la routine et je reviens
phil2 Posté(e) le 4 avril 2013 Auteur Posté(e) le 4 avril 2013 RE RE LECRABE je viens de tester ta routine elle fonctionne parfaitement bien et ce qui est tres interressantc'est qu'elle marche quel que soit le nom du bloc Encore merci a tous les deuxPhil
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