fabcad Posté(e) le 25 novembre 2008 Posté(e) le 25 novembre 2008 Bonjour a tous, Suite à ce message http://www.cadxp.com/sujetXForum-21589.htm ou il etait question d'ajout de zéros à gauche d'un index de textes, comment faire la même chose mais sur des attributs de blocs. Cahier des Charges : Cliquez sur l'attribut de bloc, faire l'ajout de zéros à gauche en respectant le nombre de 4 chiffres, puis mettre le bloc dans un calque nommé HYDRANTS-TEMP, ce dernier est à créer si il n'existe pas dans la collection des calques. Par rapport à AutoLISP l'accès aux attributs d'un bloc sont t-ils plus simples en Visual LISP ? Merci d'avance, [Edité le 27/11/2008 par fabcad]
Patrick_35 Posté(e) le 25 novembre 2008 Posté(e) le 25 novembre 2008 Bonjour Par rapport à AutoLISP l'accès aux attributs d'un bloc sont t-ils plus simples en Visual LISP ?Oh oui Un exemple(setq bl (vlax-ename->vla-object (car (entsel)))) ; choix du bloc(setq att (vlax-invoke bl 'getattributes)) ; liste des attributs une boucle dans la liste pour faire ce que l'on désire dans les attributs @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
fabcad Posté(e) le 27 novembre 2008 Auteur Posté(e) le 27 novembre 2008 Un peu d'aide s'il vous plait,Voici mon message d'erreur : Sélectionnez un numero d'ordre : ; erreur: type d'argument incorrect: VLA-OBJECT sur cet essai de programme : ;; AJOUT-ZEROS Fabrice 27/11/08 ;; AJOUT-ZEROS sur les attributs (defun c:AJOUT-ZEROS (/ space att lst1 lst2 ss1 ss2 txt al p1 p2) (vl-load-com) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))) );fin or (setq att (nentsel "\nSélectionnez un numero d'ordre : ")) (setq att (car att)) (vlax-ename->vla-object att) (setq index (vla-get-TextString att)) (if (< 4 (setq lg-index (strlen index))) (setq index (substr index (- lg-index 3))) (repeat (- 4 lg-index) (setq index (strcat "0" index))) ) (vla-put-TextString att index) );fin defun AJOUT-ZEROS Merci Fabcad.
Patrick_35 Posté(e) le 27 novembre 2008 Posté(e) le 27 novembre 2008 Salut Tu n'affectes pas de variable sur cette ligne (vlax-ename->vla-object att) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
fabcad Posté(e) le 27 novembre 2008 Auteur Posté(e) le 27 novembre 2008 Voici mon programme fini mais pour un bloc. ;; AJOUT-ZEROS Fabrice 27/11/08 ;; Ajout de Zéros sur le numéro d'ordre d'attribut de bloc (defun c:AJOUT-ZEROS (/ space att lst1 lst2 ss1 ss2 txt al p1 p2) (vl-load-com) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))) );fin or (setq att (nentsel "\nSélectionnez un numero d'ordre : ")) (setq att (vlax-ename->vla-object (car att))) (setq index (vla-get-TextString att)) (if (< 4 (setq lg-index (strlen index))) (setq index (substr index (- lg-index 3))) (repeat (- 4 lg-index) (setq index (strcat "0" index))) );fin if (setq height 6) (setq style-att "ATT") (vla-put-TextString att index) (vla-put-Stylename att style-att) (vla-put-Height att height) );fin defun AJOUT-ZEROS [Edité le 27/11/2008 par fabcad]
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