PHILPHIL Posté(e) le 13 juin 2016 Partager Posté(e) le 13 juin 2016 bonsoir c'est une lisp qui date, il me sert a forcer des valeurs de parametre dynamique dans un bloc dynamique justement. ca marche tres bien pour des valeurs numeriques: LARGEUR, HAUTEUR, ou les angles mais quand je veux forcer les etats d'inversion, il ne veut pasil lui faut comme valeur 0 ou 1 j'ai beau mettre 0 ou 1 dans la boite de dialogue en utilisant ceci dans le lisp :(vla-put-value att (atoi (cdr don))) ca plante meme si dans le LISp je met 1 ou 0 a la place : (vla-put-value att 1 ) ca me met tjrs "Erreur Automation Entrée incorrecte" question qu'est ce que ca attend comme reponse ?? ( oui il y a plein de test de variable et de toto ( c'est pour savoir ou s'arrete le lisp )) a+ merci Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal Lien vers le commentaire Partager sur d’autres sites More sharing options...
PHILPHIL Posté(e) le 13 juin 2016 Auteur Partager Posté(e) le 13 juin 2016 HELLO pour tester avec la boite de dialogue ca devrait mieux marcher a+ Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal Lien vers le commentaire Partager sur d’autres sites More sharing options...
zebulon_ Posté(e) le 14 juin 2016 Partager Posté(e) le 14 juin 2016 Bonjour, dans le cas d'un état d'inversion, les valeurs admises sont bien (0 1), mais il faut transformer les entiers en variants avant de les injecter dans la fonction (vla-put-value ...) J'ai fait un essai sur un bloc qui n'a qu'un seul paramètre d'inversion. Commande: (setq e (entlast))<Nom d'entité: 7ffffb05d60> Commande: (setq dbp (vla-getdynamicblockproperties e))#<variant 8201 ...> Commande: (setq dbp (vlax-variant-value dbp))#<safearray...> Commande: (setq dbp (vlax-safearray->list dbp))(#<VLA-OBJECT IAcadDynamicBlockReferenceProperty 000000002d845dc8>) Commande: (setq bp (car dbp))#<VLA-OBJECT IAcadDynamicBlockReferenceProperty 000000002d845dc8> Commande: (setq ListeAdmis (vlax-safearray->list (vlax-variant-value (vla-get-AllowedValues bp))))(#<variant 2 0> #<variant 2 1>) Commande: (setq ListeAdmis (mapcar 'vlax-variant-value ListeAdmis))(0 1) Commande: (vla-put-value bp 0); erreur: Erreur Automation Entrée incorrecte; on voit bien là qu'on ne peut pas entrer la valeur numérique 0 ou 1 Commande: (setq varint (vlax-make-variant 0 vlax-vbInteger))#<variant 2 0> Commande: (vla-put-value bp varint)nil Commande: (setq varint (vlax-make-variant 1 vlax-vbInteger))#<variant 2 1> Commande: (vla-put-value bp varint)nil AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi) Lien vers le commentaire Partager sur d’autres sites More sharing options...
PHILPHIL Posté(e) le 14 juin 2016 Auteur Partager Posté(e) le 14 juin 2016 hello zebulon merciii Cool ca marche a+ Phil (DEFUN c:cpnf (/) (SETVAR "cmdecho" 0) (SETQ osm (GETVAR "osmode")) (PROMPT "\nSELECTIONNER LES BLOCS PARAMETRIQUE A MODIFIER :") (SETQ selinsert (SSGET (LIST '(0 . "INSERT")))) (SETQ com (SSLENGTH selinsert)) (SETQ compt 0 propdynnom2 nil pop2 nil pro2 nil ) (WHILE (< compt com) (PROGN (FOREACH att (VLAX-INVOKE (VLAX-ENAME->VLA-OBJECT (CDR (ASSOC -1 (ENTGET (SSNAME selinsert compt))))) 'getdynamicblockproperties ) (IF (/= (VLAX-VARIANT-TYPE (VLA-GET-VALUE att)) 8197) (SETQ propdynnom2 (CONS (VLA-GET-PROPERTYNAME att) propdynnom2) pro2 (CONS (LIST (VLA-GET-PROPERTYNAME att) (VLA-GET-UNITSTYPE att) (VLAX-VARIANT-TYPE (VLA-GET-VALUE att)) (VLAX-VARIANT-VALUE (VLA-GET-VALUE att)) ) pro2 ) ) ) ) (SETQ compt (1+ compt)) ) ) (SETQ propdynnom (remove_doubles (VL-SORT propdynnom2 '<))) (boitepropdyn2) (SETQ compt 0) (SETQ com (SSLENGTH selinsert)) (acet-ui-progress-init "Avancement" com) (WHILE (< compt com) (FOREACH don ret (FOREACH att (VLAX-INVOKE (VLAX-ENAME->VLA-OBJECT (CDR (ASSOC -1 (ENTGET (SSNAME selinsert compt))))) 'getdynamicblockproperties ) (PROGN (IF (= (VLA-GET-PROPERTYNAME att) (CAR don)) (PROGN (IF (AND (= (VLA-GET-UNITSTYPE att) 0) (= (VLAX-VARIANT-TYPE (VLA-GET-VALUE att)) 2)) (PROGN (VLA-PUT-VALUE att (VLAX-MAKE-VARIANT (ATOI (CDR don)) VLAX-VBINTEGER))) ) (IF (AND (= (VLA-GET-UNITSTYPE att) 1) (= (VLAX-VARIANT-TYPE (VLA-GET-VALUE att)) 5)) (PROGN (SETQ test11 (CDR don)) (VLA-PUT-VALUE att (* (ATOF (CDR don)) (/ PI 180)))) ) (IF (AND (= (VLA-GET-UNITSTYPE att) 2) (= (VLAX-VARIANT-TYPE (VLA-GET-VALUE att)) 5)) (PROGN (SETQ test12 (CDR don)) (SETQ test12a (ATOF (CDR don))) (VLA-PUT-VALUE att (ATOF (CDR don)))) ) ) ) ) ) ) (SETQ compt (1+ compt)) (acet-ui-progress-safe compt) ) (acet-ui-progress-done) (SETVAR "osmode" osm) (PRINC) ) (DEFUN boitepropdyn2 (/ tmp file fuzz ret pn av dcl_id val) (SETQ tmp (VL-FILENAME-MKTEMP "Tmp.dcl") file (OPEN tmp "w") ret nil ) (WRITE-LINE (STRCAT "DynBlkProps:dialog{label=\"Blocs dynamiques\";" " :text{label=\"Nom du bloc : \"" (VL-PRIN1-TO-STRING "Tous les blocs") " ;} :text{label=\"Nombre de bloc : " (ITOA com) "\"; } spacer;:boxed_column{label=\"Propriétés dynamiques\";" ) file ) (FOREACH pn propdynnom (WRITE-LINE (STRCAT ":row{:edit_box{label=" (VL-PRIN1-TO-STRING pn) ";key=" (VL-PRIN1-TO-STRING pn) ";edit_width=20;allow_accept=true;} }" ) file ) ) (WRITE-LINE "}spacer;ok_cancel;}" file) (CLOSE file) (SETQ dcl_id (LOAD_DIALOG tmp)) (IF (NOT (NEW_DIALOG "DynBlkProps" dcl_id)) (EXIT) ) (FOREACH p pop2 (START_LIST (CAR p)) (MAPCAR 'ADD_LIST (CDR p)) (END_LIST)) (ACTION_TILE "accept" "(foreach p propdynnom (if (assoc p POP2) (setq val (nth (atoi (get_tile p)) (cdr (assoc p POP2)))) (setq val (get_tile p))) (if (and val (/= val \"\")) (setq ret (cons (cons p val) ret)))) (and (not ret) (setq ret T)) (setq sel (get_tile \"selset\")) (done_dialog)" ) (ACTION_TILE "cancel" "(setq ret nil)") (START_DIALOG) (UNLOAD_DIALOG dcl_id) (VL-FILE-DELETE tmp) ) FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal Lien vers le commentaire Partager sur d’autres sites More sharing options...
zebulon_ Posté(e) le 14 juin 2016 Partager Posté(e) le 14 juin 2016 Super ! :) voir aussi la syntaxe dans ce sujet. Cela te permettra de faire le tri entre les variants, les arrays et de savoir quand on peut s'en passer. AmicalementVincent 1 C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi) Lien vers le commentaire Partager sur d’autres sites More sharing options...
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