PHILPHIL Posté(e) le 14 octobre 2011 Partager Posté(e) le 14 octobre 2011 BONJOUR j'ai fait ce petit lisp qui me permetde modifier une propriété dynamique numérique d'un blocje tappe le nom de la propriétée et ca valeur modificativepuis je sélectionne les blocs j'aimerais pouvoir faire l'inversesélectionner les blocs et que l'on me propose les propriétés dynamique communespour choisir dans une fenetre, permetant de pas a avoir a tapper et peut etre e tromper mais la je bloque dans la récupération et la mise en fenetre plus sélection a+ phil (defun c:cpn (/) (setvar "cmdecho" 0) (setq osm (getvar "osmode")) (setq tprec1 (atoi (getcfg "APPDATA/precision1"))) (setq modifnume (atof (getcfg "APPDATA/MODIFNUME"))) (setq modifpara (getcfg "APPDATA/MODIFPARA")) (princ "\n") (setq compt 0) (setq com1 (getstring t (strcat "\nVEUILLEZ ENTRER LE NON DU PARAMETRE A MODIFIER <" modifpara "> : " ) ) ) (if (/= com1 "") (setq modifpara com1) ) (setcfg "APPDATA/MODIFPARA" modifpara) (setq tmp (getdist (strcat "\nENTRER LA VALEUR NUMERIQUE DE MODIFICATION <" (rtos modifnume 2 8) ">: " ) ) ) (if tmp (setq modifnume tmp) ) (setcfg "APPDATA/MODIFNUME" (rtos modifnume 2 8)) (prompt "\nSELECTIONNER LES BLOCS PARAMETRIQUE A MODIFIER :" ) (setq sel (ssget (list '(0 . "INSERT")))) (setq com (sslength sel)) (while (< compt com) (progn (foreach att (vlax-invoke (vlax-ename->vla-object (cdr (assoc -1 (entget (ssname sel compt)))) ) 'getdynamicblockproperties ) (if (= (vla-get-propertyname att) modifpara) (progn (setq valeurextraite (vlax-variant-value (vla-get-value att))) (vla-put-value att (+ valeurextraite modifnume)) ) ) ) (setq compt (1+ compt)) ) ) (setvar "osmode" osm) (setq poi null) (princ) ) 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 21 octobre 2011 Auteur Partager Posté(e) le 21 octobre 2011 hello une petite idée pour afficher selectionner par boite de dialogue les propriétés dynamiques ? histoire d'apprendre en meem temps 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...
(gile) Posté(e) le 21 octobre 2011 Partager Posté(e) le 21 octobre 2011 Salut, Ce que tu demandes nécessite de créer la boite de dialogue "à la volée" (écrire le fichier DCL depuis le code LISP) en fonctions des propriétés dynamiques du bloc sélectionné. Tu trouveras un exemple avec la routine ssd dans Special_selections sur cette page. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
bryce Posté(e) le 21 octobre 2011 Partager Posté(e) le 21 octobre 2011 Bonjour, j'aimerais pouvoir faire l'inversesélectionner les blocs et que l'on me propose les propriétés dynamique communesTu peux sélectionner les blocs, puis simplement utiliser la palette Propriétés, non ? :unsure: Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant Lien vers le commentaire Partager sur d’autres sites More sharing options...
PHILPHIL Posté(e) le 21 octobre 2011 Auteur Partager Posté(e) le 21 octobre 2011 hello ok gile je vais aller voir ca merci bryce, le probleme est quand tu as plusieurs blocs ayant le meme nom, la meme propriéta dynamique mais pas forcement la meme valeur, donc on ne peut plus passer par la palette de popriétés je suis d'accord que propriétés commune a chaque blocs ne sert a rien, a moi de sélectionner les blocs en conséquence avant merci 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...
bryce Posté(e) le 21 octobre 2011 Partager Posté(e) le 21 octobre 2011 bryce, le probleme est quand tu as plusieurs blocs ayant le meme nom, la meme propriéta dynamique mais pas forcement la meme valeur, donc on ne peut plus passer par la palette de popriétés Justement si, ou alors je n'ai pas compris ce que tu veux faire. Si par exemple tu as plusieurs blocs "porte" avec une propriété dynamique "largeur" dont les valeurs sont différentes.Si tu sélectionnes ces blocs "porte", dans la palette Propriétés la propriété dynamique "largeur" affiche *VARIE*, mais tu peux cliquer dans la case et sélectionner dans une liste une largeur qui sera affectée à toutes les portes sélectionnées.Ce n'est pas ce que tu veux faire ? Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant Lien vers le commentaire Partager sur d’autres sites More sharing options...
PHILPHIL Posté(e) le 21 octobre 2011 Auteur Partager Posté(e) le 21 octobre 2011 hello he nonn blocs "PANNEAU"longueur ( paramétrique ) 121, 128,143 ....et je veux rajouter 3.5 cm a chaque longueur ce que fait deja le LISP, mais je dois tapper au clavier le nom du parametre ici "longueur" si je passe par la palette de propriétés et je mets 121+3.5 chaque panneaux sélectionné aurat une longueur de 124.5cmtous le calepinage redevient faux t'inquiete je vais me débrouiller merci 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...
bryce Posté(e) le 21 octobre 2011 Partager Posté(e) le 21 octobre 2011 Ok, je n'avais pas lu le lisp suffisamment en détail pour voir que tu voulais ajouter une valeur à la valeur actuelle du paramètre... <_< Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant Lien vers le commentaire Partager sur d’autres sites More sharing options...
PHILPHIL Posté(e) le 27 octobre 2011 Auteur Partager Posté(e) le 27 octobre 2011 hello LISP a tester ca permet de modifier a la volée des parametres dynamiques numérique de rajouter ( ex : +123 ) ou soustraire ( ex: -666 ) une valeur pour les parametres remplie dans la boite de dialogue il y a une vérification pour que les parametres ne soit pas négatif , si c'est le cas il n'y a pas de modification merci a gile pour le bout de code SSD de la boite j'ai pas tout piger surtout la LISTE POP2 je vois pas a quoi elle sert a+ phil (defun c:cpn (/ propdynnom2) (setvar "cmdecho" 0) (setq osm (getvar "osmode")) (setq tprec1 (atoi (getcfg "APPDATA/precision1"))) (prompt "\nSELECTIONNER LES BLOCS PARAMETRIQUE A MODIFIER :") (setq selinsert (ssget (list '(0 . "INSERT")))) (setq com (sslength selinsert)) (setq compt 0 propdynnom2 nil pop2 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)) 5) (setq propdynnom2 (cons (vla-get-propertyname att) propdynnom2)) ) ) (setq compt (1+ compt)) ) ) (setq propdynnom (remove_doubles (vl-sort propdynnom2 '<))) (boitepropdyn) (setq compt 0) (setq com (sslength selinsert)) (while (< compt com) (foreach don ret (foreach att (vlax-invoke (vlax-ename->vla-object (cdr (assoc -1 (entget (ssname selinsert compt))))) 'getdynamicblockproperties ) (if (= (vla-get-propertyname att) (car don)) (progn (setq valeurextraite (vlax-variant-value (vla-get-value att))) (if (> (+ valeurextraite (atof (cdr don))) 0) (vla-put-value att (+ valeurextraite (atof (cdr don)))) ) ) ) ) ) (setq compt (1+ compt)) ) (setvar "osmode" osm) (setq poi null) (princ) ) (defun boitepropdyn (/ 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") " ;} 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) ;;; ret ) 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 30 octobre 2011 Auteur Partager Posté(e) le 30 octobre 2011 HELLO mise a jour pour les parametres de type "rotation" qui sont en radiant et non pas en degrésmais qui doivent etre rentrés dans la fenetre des propriétées en degrés a+ phil (defun c:cpn (/ propdynnom2) (setvar "cmdecho" 0) (setq osm (getvar "osmode")) (setq tprec1 (atoi (getcfg "APPDATA/precision1"))) (prompt "\nSELECTIONNER LES BLOCS PARAMETRIQUE A MODIFIER :") (setq selinsert (ssget (list '(0 . "INSERT")))) (setq com (sslength selinsert)) (setq compt 0 propdynnom2 nil pop2 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)) 5) (setq propdynnom2 (cons (vla-get-propertyname att) propdynnom2)) ) ) (setq compt (1+ compt)) ) ) (setq propdynnom (remove_doubles (vl-sort propdynnom2 '<))) (boitepropdyn) (setq compt 0) (setq com (sslength selinsert)) (while (< compt com) (foreach don ret (foreach att (vlax-invoke (vlax-ename->vla-object (cdr (assoc -1 (entget (ssname selinsert compt))))) 'getdynamicblockproperties ) (setq test10 (ssname selinsert compt)) (setq test11 (car don)) (setq test12 att) (if (= (vla-get-propertyname att) (car don)) (progn (if (= (vla-get-unitstype att) 2) (progn (setq valeurextraite (vlax-variant-value (vla-get-value att))) (if (> (+ valeurextraite (atof (cdr don))) 0) (vla-put-value att (+ valeurextraite (atof (cdr don)))) ) ) (progn (setq valeurextraite (vlax-variant-value (vla-get-value att))) (if (> (+ valeurextraite (* ( atof (cdr don)) (/ pi 180))) 0) (vla-put-value att (+ valeurextraite (* (atof (cdr don)) (/ pi 180)))) ) ) ) ;;; (if (= (vla-get-unitstype att) 1) ;;; (progn (setq valeurextraite (vlax-variant-value (vla-get-value att))) ;;; (if (> (+ valeurextraite (atof (* (cdr don) (/ pi 180)))) 0) ;;; (vla-put-value att (+ valeurextraite (atof (* (cdr don) (/ pi 180))))) ;;; ) ;;; ) ;;; ) ) ) ) ) (setq compt (1+ compt)) ) (setvar "osmode" osm) (setq poi null) (princ) ) une declinaison du LISP pour changer les attributs (defun c:caa (/ propattributnom2) (setvar "cmdecho" 0) (setq osm (getvar "osmode")) (prompt "\nSELECTIONNER LES BLOCS A MODIFIER :") (setq selinsert (ssget (list '(0 . "INSERT")))) (setq com (sslength selinsert)) (setq compt 0 propattributnom2 nil pop2 nil ) (while (< compt com) (progn (foreach att (vlax-invoke (vlax-ename->vla-object (cdr (assoc -1 (entget (ssname selinsert compt))))) 'getattributes ) (setq propattributnom2 (cons (vla-get-tagstring att) propattributnom2)) ) (setq compt (1+ compt)) ) ) (setq propattributnom (remove_doubles (vl-sort propattributnom2 '<))) (boiteattributs) (setq compt 0) (setq com (sslength selinsert)) (while (< compt com) (foreach don ret (foreach att (vlax-invoke (vlax-ename->vla-object (cdr (assoc -1 (entget (ssname selinsert compt))))) 'getattributes ) (cond ((= (vla-get-tagstring att) (car don)) (vla-put-textstring att (cdr don)))) ) ) (setq compt (1+ compt)) ) (setvar "osmode" osm) (setq poi null) (princ) ) (defun boiteattributs (/ 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 avec attributs\";" " :text{label=\"Nom du bloc : \"" (vl-prin1-to-string "Tous les blocs") " ;} spacer;:boxed_column{label=\"Propriétés d'attributs\";" ) file ) (foreach pn propattributnom (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 propattributnom (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) ;;; ret ) 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...
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