Aller au contenu

Ajout de Zéros sur attributs de blocs en vlisp


Messages recommandés

Posté(e)

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]

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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.

Posté(e)

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]

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é