Aller au contenu

Ajout de Zéros sur attributs de blocs en vlisp


fabcad

Messages recommandés

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]

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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]

Lien vers le commentaire
Partager sur d’autres sites

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é