PHILPHIL Posté(e) le 23 octobre 2016 Posté(e) le 23 octobre 2016 bonjour grace aux Lispeurs de CADXP (ils reconnaitront leur code )j'avais modifié un lisp ( ci dessous ) qui me permettait de copier les attributs et / ou les propriétés dynamique d'un bloc vers un autre bloc je travaille avec autocad architecture, et les objets AEC "space" surtout j'aimerai faire la meme chose mais pour les données d'un jeu de propriétés d'objet aec.en modifiant mon lisp ( ci dessous ) ces données doivent etre dans un dictionnaire je suppose. comment y acceder en lisp ?avoir la liste des données liées a un objet AEC? ( vla ??? ou get??? )comment remplacer la donnée ensuite ? si ca marche pour un objet AEC "space" ca devrait aussi etre utile pour les autres objets AEC ( architecture, MEP, ... ) merci a+ Phil (defun c:mdpa (/) (setvar "cmdecho" 0) (setvar "CURSORSIZE" 10) (setq osm (getvar "osmode")) (if (and (setq source (car (entsel "\nCLIQUER SUR LE BLOC DE REFERENCE : "))) (setq source (vlax-ename->vla-object source)) (= (vla-get-objectname source) "AcDbBlockReference") ) (progn (setq layerbloc (vla-get-layer source) namebloc (vla-get-effectivename source) ) ) ) (setq compt 0 propdynnom nil propdynnom2 nil propdynnom3 nil attributnom nil attributnom2 nil attributnom3 nil ) (foreach att (vlax-invoke source 'getdynamicblockproperties) (if (/= (vlax-variant-type (vla-get-value att)) 8197) (setq propdynnom2 (cons (cons (vla-get-propertyname att) (vlax-variant-value (vla-get-value att))) propdynnom2)) ) ) (setq propdynnom (vl-sort propdynnom2 (function (lambda (p1 p2) (< (car p1) (car p2)))))) (foreach att (vlax-invoke source 'getattributes) (setq attributnom2 (cons (cons (vla-get-tagstring att) (vla-get-textstring att)) attributnom2)) ) (setq attributnom (vl-sort attributnom2 (function (lambda (p1 p2) (< (car p1) (car p2)))))) (prompt "\nSELECTIONNER LES BLOCS A MODIFIER:") (setq selinsert (ssget (list (cons 0 "INSERT") (cons 8 layerbloc)))) (setq com (sslength selinsert)) (boitepropdynattribut) (foreach att (vlax-invoke source 'getdynamicblockproperties) (progn (if (member (vla-get-propertyname att) listeparam) (setq propdynnom3 (cons (cons (vla-get-propertyname att) (vla-get-value att)) propdynnom3)) ) ) ) (foreach att (vlax-invoke source 'getattributes) (progn (if (member (vla-get-tagstring att) listeattrib) (setq attributnom3 (cons (cons (vla-get-tagstring att) (vla-get-textstring att)) attributnom3)) ) ) ) (setvar "CURSORSIZE" 100) (setq compt 0) ;;; (acet-ui-progress-init "Avancement" com) (while (< compt com) (if (= (vla-get-effectivename (vlax-ename->vla-object (cdr (assoc -1 (entget (ssname selinsert compt)))))) namebloc ) (progn (foreach bidyn propdynnom3 (progn (setq nomprop (car bidyn) valprop (cdr bidyn) ) (foreach prop (vlax-invoke (vlax-ename->vla-object (cdr (assoc -1 (entget (ssname selinsert compt))))) 'getdynamicblockproperties ) (if (= (vla-get-propertyname prop) nomprop) (vla-put-value prop valprop) ) ) ) ) (foreach bidyn attributnom3 (progn (setq nomattrib (car bidyn) valattrib (cdr bidyn) ) (foreach prop (vlax-invoke (vlax-ename->vla-object (cdr (assoc -1 (entget (ssname selinsert compt))))) 'getattributes ) (if (= (vla-get-tagstring prop) nomattrib) (vla-put-textstring prop valattrib) ) ) ) ) ) ) (acet-ui-progress-init (strcat "Avancement " (rtos (/ (* compt 100) (float com )) 2 2 ) " %") com) (acet-ui-progress-safe compt) (setq compt (1+ compt)) ) (acet-ui-progress-done) (setvar "osmode" osm) (princ) ) FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
lecrabe Posté(e) le 26 octobre 2016 Posté(e) le 26 octobre 2016 Hello Phil Je suppose que tu es l'auteur de CE sujet : http://forums.autodesk.com/t5/autocad-francais/recuperer-et-modifier-les-donnees-d-un-jeu-de-propriete-d-une/m-p/6643771/highlight/false#M47653 SVP il serait SYMPA de signaler les liens croises dans le cas d'un Multi-Post ! Merci, Bye, lecrabe Autodesk Expert Elite Team
PHILPHIL Posté(e) le 26 octobre 2016 Auteur Posté(e) le 26 octobre 2016 hello lecrabe oui je suis l'auteur de l'autre sujet mais j'y vais rarement sur le forum autodeskj'ai pas fait le lien entre les deux forums désolé bon je vais laisser tomber mon idée de manipuler les données d'un jeu de propriété.je suis pas tres doué en visual lisp et j'y connais rien en dotnet. j'ai bien vue qu'il y avait des fonctions "ARX" "aec....." dans autocadmais comment passer du résultats de ses fonction a du lisp ?? merci Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
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