arnaudalp Posté(e) le 17 avril 2019 Posté(e) le 17 avril 2019 BonsoirJe me prends la tête sur un bloc , mon travail du soir...J'ai un bloc dans un dessin, nom N_BLOC.Ce bloc est composé d'attributs TN et Fe , calque, nature.Je souhaite accéder aux attributs Fe et TN pour leur indiquer une nouvelle valeur. J'en suis à avoir ma sélection avec (or *acad* (setq *acad* (vlax-get-acad-object))) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*))) (setq blo (ssname selection_pt_traitement i)) ;; mon bloc sélectionné (setq blo (vlax-ename->vla-object blo)) Merci
(gile) Posté(e) le 17 avril 2019 Posté(e) le 17 avril 2019 Salut, Depuis AutoCAD 2012, la fonction LISP setpropertyvalue permet d'attribuer directement la valeur d'une référence d'attribut en considérant l'étiquette de l'attribut comme une propriété du bloc. (setq blo (ssname selection_pt_traitement i)) ;; mon bloc sélectionné (setpropertyvalue "TN" "toto") (setpropertyvalue "Fe" "titi") Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
arnaudalp Posté(e) le 18 avril 2019 Auteur Posté(e) le 18 avril 2019 BonjourMerci de la réponse. Je n'avais jamais utilisé setproperty value. A ce qui est écris, j'ai jouté "blo" après setpropertyvalue (il me semble que c'était manquant.Par contre j'ai erreur de demande ADS. Le résultat de blo : Commande: !ename_trait((-1 . <Nom d'entité: 146b951f500>) (0 . "INSERT") (330 . <Nom d'entité: 14680b709f0>) (5 . "186E40") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "REC") (6 . "Rec_Continu") (100 . "AcDbBlockReference") (66 . 1) (2 . "N_BLOC") (10 1002.0 5002.0 9.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.785398) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0)) Salut, Depuis AutoCAD 2012, la fonction LISP setpropertyvalue permet d'attribuer directement la valeur d'une référence d'attribut en considérant l'étiquette de l'attribut comme une propriété du bloc. (setq blo (ssname selection_pt_traitement i)) ;; mon bloc sélectionné (setpropertyvalue "TN" "toto") (setpropertyvalue "Fe" "titi")
(gile) Posté(e) le 18 avril 2019 Posté(e) le 18 avril 2019 Oupss !...(setq blo (ssname selection_pt_traitement i)) ;; mon bloc sélectionné (setpropertyvalue blo "TN" "toto") (setpropertyvalue blo "Fe" "titi") Pas de guillemets autour de "blo", ce n'est pas une chaîne, blo est une variable (plus exactement un symbole). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
arnaudalp Posté(e) le 18 avril 2019 Auteur Posté(e) le 18 avril 2019 Les guillemets étaient juste pour le texte sur le forum ;) En fait, mon erreur ADS venait d'ailleurs, j'ai modifié une chose hier soir et j'avais oublié de corriger ce matin... Merci Oupss !...(setq blo (ssname selection_pt_traitement i)) ;; mon bloc sélectionné (setpropertyvalue blo "TN" "toto") (setpropertyvalue blo "Fe" "titi") Pas de guillemets autour de "blo", ce n'est pas une chaîne, blo est une variable (plus exactement un symbole).
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