lex Posté(e) le 17 avril 2010 Posté(e) le 17 avril 2010 Bonjour y a-t-il un lisp qui permet d'extraire des données d'un bloc attribut et que l'on peut réinjecter aussitôt dans un autre block attribut possédant les mêmes invite et étiquettesans devoir passer par un fichier txt comme dans l’express-tools attout et attin merci.
(gile) Posté(e) le 17 avril 2010 Posté(e) le 17 avril 2010 Salut, CAT de Patrick_35 sur cette page par exemple. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lex Posté(e) le 17 avril 2010 Auteur Posté(e) le 17 avril 2010 Salut, merci gile, j’ai fais le test ça ne convient pasCela fonctionne uniquement si le bloc attribut source et identique au bloc attribut cible dans le cas contraire les information réinjectées ne sont pas mises à la bonne place En pratique les informations que j’extrais du bloc attribut source sont réinjecté a deux autres bloc attribut de nom et de forme différente leurs points commun étant leur ( étiquette, invite, layeurs ) Exemple : 1è symbole source sonde de température, 2ème symbole contact ouvert.3ème symbole bornier avec câble et repaire câble.
(gile) Posté(e) le 18 avril 2010 Posté(e) le 18 avril 2010 Je presque suis sûr que ça a déjà été fait plus d'une fois.Comme j'ai plus vite fait de (ré)écrire un petit truc que de faire une recherche, voici : (defun c:copyatt (/ source attlst ss attrib) (vl-load-com) (if (and (setq source (car (entsel "\nSélectionnez le bloc source: "))) (setq source (vlax-ename->vla-object source)) (= (vla-get-ObjectName source) "AcDbBlockReference") (= (vla-get-HasAttributes source) :vlax-true) ) (progn (foreach att (vlax-invoke source 'GetAttributes) (setq attlst (cons (cons (vla-get-TagString att) (vla-get-TextString att) ) attlst ) ) ) (if (ssget '((0 . "INSERT") (66 . 1))) (progn (vlax-for blk (setq ss (vla-get-ActiveSelectionSet (vla-get-Activedocument (vlax-get-acad-object) ) ) ) (foreach att (vlax-invoke blk 'GetAttributes) (if (setq attrib (assoc (vla-get-TagString att) attlst)) (vla-put-TextString att (cdr attrib)) ) ) ) (vla-Delete ss) ) ) ) (princ "\nEntité non valide") ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lex Posté(e) le 18 avril 2010 Auteur Posté(e) le 18 avril 2010 Bonjour gile, je viens de tester ton code il s'arrete juste après avoir saisit le bloc source,impossible de réinjecter dans les autres.a+
(gile) Posté(e) le 18 avril 2010 Posté(e) le 18 avril 2010 Pas chez moi, après avoir sélectionné le bloc source, tu as l'invite par défaut "Choix des objets: " qui doit s'afficher et tu sélectionnes les blocs cible. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lex Posté(e) le 18 avril 2010 Auteur Posté(e) le 18 avril 2010 j'ai ça comme méssage Commande: copyattSélectionnez le bloc source: ; erreur: no function definition: VLAX-ENAME->VLA-OBJECT Commande: encore merci.
lili2006 Posté(e) le 18 avril 2010 Posté(e) le 18 avril 2010 Bonjour à toutes et tous, Et en ajoutant cette ligne en début de lisp, par exemple ? => (vl-load-com) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 18 avril 2010 Posté(e) le 18 avril 2010 J'avais oublié de mettre dans le code l'expression (vl-load-com) qui charge l'interface COM/ActiveX utilisée par les fonction LISP vla* (chargée automatiquement chez moi). J'ai modifié le code ci-dessus, ça devrait fonctionner maintenant. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lex Posté(e) le 18 avril 2010 Auteur Posté(e) le 18 avril 2010 9a marche, sorry gile c'est une question de manipulationgrand merci.
Patrick_35 Posté(e) le 19 avril 2010 Posté(e) le 19 avril 2010 Salut Il me semblait avoir répondu (page 16 - réponse 28) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
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