Aller au contenu

PHILPHIL

Membres
  • Compteur de contenus

    1 259
  • Inscription

  • Dernière visite

  • Jours gagnés

    10

Tout ce qui a été posté par PHILPHIL

  1. PHILPHIL

    LIER DES BLOCS

    HELLO patrick a ecrit LATT qui relie les attibuts entre eux est'il possible de relier des blocs entre eux pour aller plus vite en selectionnant ce que l'on voudrait lier a l'interieur des blocs des attributs de meme noms ( ca va de soit) des tables de blocs un parametre de visibilité ou des propriétés dynamiques de meme non monsieur TOTODESK si tu nous lis a+ phil
  2. hello pour didier ;) qui je le sais ne ferat pas de copier coller bêtement puisque tu sais deja faire ce genre de lisp pour analyse a+ phil couper.lsp
  3. hello lili j'utilise ca quand je dois refaire des plans avec des cotes juste a huit zero apres la virgule ( 120.00000000) au lieu de ( 120.00012456) j'ai les plans en version *.dwg mais il ne sont pas juste et je dois rendre des plans de calepinage au millimetre donc autant partir sur une base juste actuellement c'est pour refaire des "clair de beton" avec trumeau n'ayant pas la meme largeur forcement et pour positionner ensuite les fenetres et la veture ensuite et les vis ;) a+ phil
  4. hello bon c'etait pas TOP ca beuguer ca devrait etre mieux avec cette version la likp : decaler suivant les valeurs likpa : decaler suivant les valeurs qui s'additionnent licp : copier suivant les valeurs en donnant un direction licpa : copier suivant les valeurs qui s'additionnent en donnant une direction a+ phil copier decaler suivant liste v2.00.lsp
  5. hello une petite mise a jour de listedecalage et un tite fonction supplementaire likpa : decale les entites en donnant les valeurs intermediaires de decalage elles s'aditionnent au fur et a mesure phil ;;;;------------------ ;;;; decaler des entites suivant une liste valeur de decalage et un point de direction ;;;;------------------ (defun c:likpa () (setvar "cmdecho" 0) (setq osm (getvar "osmode")) (listedecalage) (prompt "CLIQUER SUR LES OBJETS A DECALER :") (setq entites nil) (while (null entites) (setq entites (ssget))) (setvar "osmode" 0) (setq poi1 nil) (while (null poi1) (setq poi1 (getpoint "POINT DE DECALAGE")) ) (setq compt 0) (setq com (sslength entites)) (while (< compt com) (progn (setq obj (ssname entites compt)) (setq decalageadd 0) (foreach elem listedeca (setq decalageadd (+ decalageadd (atof elem ))) (command "DECALER" decalageadd obj poi1 "") ) ) (setq compt (1+ compt)) ) (setvar "osmode" osm) (princ) ) (defun listedecalage () ;;; pour le decalage rentrer une valeur numérique type ( 123 ou -123 ) ;;; pour la copie rentrer des valeurs avec virgule type ( 555,0 ou -777,-666 ou 999,12 ) ;;; pour la copie si un seul chiffre est rentrer la direction doit etre fonction du dernier clic par rapport au 0,0,0 (setq sortie 1) (setq listedeca nil) (setq element nil) (while (/= sortie 0) (setq element (getstring t (strcat "\nENTRER LES VALEUR DE DECALAGE : "))) (if (/= element "") (setq listedeca (cons element listedeca)) (setq sortie 0) ) ) (setq listedeca (acad_strlsort listedeca)) )
  6. hello deux petit lisp si ca peut etre utile ou marrant ca depend likp : permet de decaler des entites suivant une liste de valeur de decalage et un point de direction licp : permet copier des entites suivant une liste de points suivant la liste de points la copie est differentes ( 13,46 ) la copie se fait "0,0" a "12,46" ( 13 ) la copie se fait de 13 par rapport a "0,0" mais la direction est fonction du denier clic sur l'espace objet, celui apres la selection des entites je pense a+ phil
  7. HELLO autre solution plus leger normalement et en deplacant les attibuts par la moitie de la distance apres a toi de choisir si tu connais les distances par rapport a l'origine ou par rapport a la marque précédente a+ phil Bloc_test 1.zip
  8. Une voiture a 2 roues à l'avant, 2 roues à l'arrière, 2 roues à droite et 2 roues à gauche. Ça fait 8 roues, vous pouvez vérifier. ;) :P DIDIER tu as oublié la roue de secours ca fait neuf
  9. salut lili comme tu le dis il est préférable d'implanter le bloc dans au moins un des calques qui compose ton bloc, c'est plus pratique pour geler les calques apres tu peux geler le calque d'implantation de ton bloc, ou un calque faisant parti de ton bloc, doit y avoir des options pour ca bout de lisp qui implante un bloc porte ( P80G 50 50 ) dans le calque C_MENINT le bloc porte comporte certaines entites dans le calque C_MENINT je ne dessine jamais rien et encore moins les blocs sur le calque 0 (zero) car si par malheur tu décomposes tes blocs tout se retrouve sur zéro, c'est balau pour la compréhension apres un petit lisp par bloc, apres a toi de voir si ce bout de lisp peut etre traduit en version palette a+ phil (defun c:p80g5050 () (calmenint) (setq techl (atof (getcfg "APPDATA/Techl"))) (setq cav (getvar "clayer")) (command "-calque" "ch" "C_MENINT" "") (command "INSERER" "c:/PERSO/bibliotheque/MENINT/DESSUS/P80G 50 50" pause (rtos (/ 0.01 techl) 2 8) "" pause ) (setvar "clayer" cav) (princ) ) (defun calmenint () (if (= (tblsearch "layer" "C_MENINT") nil) (command "-calque" "n" "C_MENINT" "co" "2" "C_MENINT" "") ) )
  10. hello pour trouver la valeur d'une propriété dynamique je passe par ce bout de LISP qui osculte toutes les proriétés (foreach prop (vlax-invoke (vlax-ename->vla-object ent) 'getdynamicblockproperties ) (if (= (vla-get-propertyname prop) "LARGEURFONDATION") (setq valeurextraitelargeurfondation (vlax-variant-value (vla-get-value prop))) ) conaissant le nom de la propriété ( LARGEURFONDATION ) n'y aurait il pas un moyen plus direct ?? genre , mais ce code est faux (setq valeur (vlax-invoke (vlax-ename->vla-object ent) 'getdynamicblockproperties (vla-get-propertyname LARGEURFONDATION) ) a+ phil
  11. HELLO merci didier merci cadmin a+ phil
  12. BONJOUR je viens de faire un test on ne peut pas joindre de fichier *.LSP ? <_< ça marche avec *.txt par contre autre test l'heure n'est tjrs pas réglée apparement message édité à 14h35 et non 2:35 a+ phil
  13. CATT.TXTsalut copie les attributs selectionnés ou tous du bloc selecttionné bon je n'avais pas vu que gile avait fait une mise a jour depuis bon week end du ( 11/11/11 ) attention au bug de 11h11 ;) phil ;;; Copier des attributs ;;; ;;; Copyright (C) (gile) (defun c:catt (/ source attlst ss attrib tag attliste) (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 (initget "S s T") (setq ans (getkword "\nVOULEZ VOUS SELECTIONNER LES ATRIBUTS OU TOUS LES RECUPERER ? (S/T):")) (if (or (= ans "s") (= ans "S")) (progn (while (and (setq att (car (nentsel "\nSélectionnez un attribut à modifier < Terminer >: "))) (= (cdr (assoc 0 (entget att))) "ATTRIB") ) (redraw att 3) (setq attliste (cons att attliste) tag (remove_doubles (cons (cdr (assoc 2 (entget att))) tag)) ref (cdr (assoc 330 (entget att))) fltr (remove_doubles (cons (assoc 2 (entget ref)) fltr)) ) (princ (strcat "\n" (itoa (length tag)) " attribut(s) sélectionné(s).")) ) ) (progn (foreach att (vlax-invoke source 'getattributes) (setq attlst (cons (cons (vla-get-tagstring att) (vla-get-textstring att)) attlst)) ) ) ) ) ) (progn (foreach att (vlax-invoke source 'getattributes) (foreach atttag tag (if (= (vla-get-tagstring att) atttag) (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") ) (foreach elfltr attliste (redraw elfltr 4)) (princ) )
  14. HELLO tes blocs sont bien implanté au meme point mais il n'ont pas la meme definition de visibilité, autocad doit donc faire la différence, il ne se contente pas de comparer les nom des blocs mais aussi le visuel apparemment attention aussi sur tes blocs a ne pas superposer, les poignées de "visibilité" et autre parametres dynamiques avec les grips du dessins, ca peut planter a+ phil
  15. PHILPHIL

    ETATCALQUE ou LAYERSTATE

    hello gilles je vais voir ca merci phil
  16. HELLO il y a cette fonction "ETATCALQUE" ou "LAYERCALQUE" qui permet de gerer les etats de calques avec une fenetres y a t'il une fonction qui permet dans un lisp de supprimer tout les etats de calques en une seule fois ? ceux ci etant inutiles et surtout "BUGUANT" dans les blocs histoire de passer cette fonction sur mes 3000 fichiers blocs le pieds serait de pouvoir choisir les noms des etats pour en faire de meme avec les fichiers "normaux" a l'ouverture a+ phil
  17. HELLO mise a jour pour les parametres de type "rotation" qui sont en radiant et non pas en degrés mais 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 )
  18. 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 )
  19. 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.5cm tous le calepinage redevient faux t'inquiete je vais me débrouiller merci a+ phil
  20. 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
  21. hello une petite idée pour afficher selectionner par boite de dialogue les propriétés dynamiques ? histoire d'apprendre en meem temps phil
  22. PHILPHIL

    dégrouper par paquets

    hello avec experience je prendrais la solution de didier et jouer avec pickstyle à 0 (control +h) les entites reste des groupes, mais tu peux bosser entité par entité et la c'est aussi rapide que si c'etait degroupé il y a aussi un LISP qui groupe / degroupe sur le site un *.VLX fonction "degrp" "grp" http://www.delicad.com/autocad/sommaire_divers.htm a+ phil
  23. PHILPHIL

    Cotation inversé

    hello les appels de fonctions dans les LISp commencent apres "DEFUN" quand c'est sur la ligne de commande de autocad au rajoute "C:" devant le nom de commande dans le cas de ce LISP "c:rec" à changer en "c:rec2" ou autre chose "c:lenomdefonctionquelonveut" a+ phil
  24. PHILPHIL

    Cotation inversé

    hello voici le lisp pour refaire les cotes avec le texte dans le bon sens par rapport au scu corespondant a la vue du plan de la coupe ou facade selectionner toutes les cotes a la volée il peut y avoir des cotes verticales qui passent en horizontales et vis versa attention car le LISP refait des cotes suivant les points 10 13 14 il faut aussi parfois redeplacer le scu sur un objet avant de relancer "REC" a+ phil (defun c:rec (/ angcote angcotedegre angscu asx1 asx2 calqcote cav com compt ent entx nonent osm point10 point11 point13 point14 stylecote stylecotebase ) (setvar "cmdecho" 0) (setq osm (getvar "osmode")) (setvar "osmode" 0) (setq cav (getvar "clayer")) (setq stylecotebase (getvar "dimstyle")) (prompt "\nCLIQUER SUR LE(S) COTE(S) A MODIFIER :") (setq entx nil) (while (null entx) (setq entx (ssget '((0 . "DIMENSION"))))) (setq compt 0) (setq com (sslength entx)) (while (< compt com) (progn (setq ent (entget (ssname entx compt))) (setq nonent (cdr (assoc -1 ent)) stylecote (cdr (assoc 3 ent)) calqcote (cdr (assoc 8 ent)) point10 (trans (cdr (assoc 10 ent)) 0 1) point11 (trans (cdr (assoc 11 ent)) 0 1) point13 (trans (cdr (assoc 13 ent)) 0 1) point14 (trans (cdr (assoc 14 ent)) 0 1) point15 (trans (cdr (assoc 15 ent)) 0 1) angcote (cdr (assoc 50 ent)) angtextcote (cdr (assoc 51 ent)) typecote (cdr (assoc 70 ent)) txt1 (cdr (assoc 1 ent)) asx1 (car (getvar "ucsxdir")) asx2 (cadr (getvar "ucsxdir")) ) (if (and (= asx1 1) (= asx2 0)) (setq angscu 0) ) (if (and (and (< asx1 1) (> asx1 0)) (and (< asx2 1) (> asx2 0)) ) (setq angscu (atan (/ asx2 asx1))) ) (if (and (= asx1 0) (= asx2 1)) (setq angscu (/ pi 2)) ) (if (and (and (< asx1 0) (> asx1 -1)) (and (< asx2 1) (> asx2 0)) ) (setq angscu (- (atan (/ asx2 asx1)) pi)) ) (if (and (= asx1 -1) (= asx2 0)) (setq angscu (* 2 pi)) ) (if (and (and (< asx1 0) (> asx1 -1)) (and (< asx2 0) (> asx2 -1)) ) (setq angscu (+ (atan (/ asx2 asx1)) pi)) ) (if (and (= asx1 0) (= asx2 -1)) (setq angscu (+ pi (/ pi 2))) ) (if (and (and (< asx1 1) (> asx1 0)) (and (< asx2 0) (> asx2 -1)) ) (setq angscu (atan (/ asx2 asx1))) ) (setq ang (- angcote angscu)) (command "-calque" "ch" calqcote "") (command "-dimstyle" "R" stylecote) (setq angcotedegre (angtos (- angcote angscu) 0 14)) (prompt (strcat "\nL'ANGLE DE LA COTE EST : " angcotedegre)) (prompt (strcat "\nLA COTE EST DE TYPE : " (rtos typecote 2 2)) ) (prompt (strcat "\nL'ANGLE (ANG) DE LA COTE EST : " (rtos ang 2 14)) ) (if (or (= (rtos ang 2 14) (- (* 3 pi))) (= (rtos ang 2 14) (- (* 2 pi))) (= (rtos ang 2 14) (- pi)) (= (rtos ang 2 14) 0) (= (rtos ang 2 14) pi) (= (rtos ang 2 14) (* 2 pi)) (= (rtos ang 2 14) (* 3 pi)) ) (progn (prompt (strcat "\nL'ANGLE EST EGAL A 180 OU 0")) (if (or (= typecote 32) (= typecote 160)) (progn (command "cotlin" point13 point14 "H" point10) (setq entder (entget (entlast))) (setq entder (subst (cons 1 txt1) (assoc 1 entder) entder)) (entmod entder) ) ) (if (or (= typecote 33) (= typecote 161)) (progn (command "cotali" point13 point14 point10) (setq entder (entget (entlast))) (setq entder (subst (cons 1 txt1) (assoc 1 entder) entder)) (entmod entder) ) ) (if (or (= typecote 36) (= typecote 164)) (progn (command "COPIER" nonent "" "0,0" "0,0") (setq entder (entget (entlast))) (setq entder (subst (cons 51 (- angtextcote pi)) (assoc 51 entder) entder ) ) (setq entder (subst (cons 1 txt1) (assoc 1 entder) entder)) (entmod entder) ) ) ) (progn (if (or (= (rtos ang 2 14) (- (+ pi pi (/ pi 2)))) (= (rtos ang 2 14) (- (+ pi (/ pi 2)))) (= (rtos ang 2 14) (- (/ pi 2))) (= (rtos ang 2 14) (/ pi 2)) (= (rtos ang 2 14) (+ pi (/ pi 2))) (= (rtos ang 2 14) (+ pi pi (/ pi 2))) ) (progn (prompt (strcat "\nL'ANGLE EST EGAL A 90 OU 270")) (if (or (= typecote 32) (= typecote 160)) (progn (command "cotlin" point13 point14 "V" point10) (setq entder (entget (entlast))) (setq entder (subst (cons 1 txt1) (assoc 1 entder) entder)) (entmod entder) ) ) (if (or (= typecote 33) (= typecote 161)) (progn (command "cotali" point13 point14 point10) (setq entder (entget (entlast))) (setq entder (subst (cons 1 txt1) (assoc 1 entder) entder)) (entmod entder) ) ) (if (or (= typecote 36) (= typecote 164)) (progn (command "COPIER" nonent "" "0,0" "0,0") (setq entder (entget (entlast))) (setq entder (subst (cons 51 (- angtextcote pi)) (assoc 51 entder) entder ) ) (setq entder (subst (cons 1 txt1) (assoc 1 entder) entder)) (entmod entder) ) ) ) (progn (prompt (strcat "\nL'ANGLE N'EST PAS EGAL A 0 90 180 OU 270") ) (setq angcotedegre (angtos (- angcote angscu) 0 14)) (if (or (= typecote 32) (= typecote 160)) (progn (vl-cmdf "cotlin" point13 point14 "R" angcotedegre point10) (setq entder (entget (entlast))) (setq entder (subst (cons 1 txt1) (assoc 1 entder) entder)) (entmod entder) ) ) (if (or (= typecote 33) (= typecote 161)) (progn (vl-cmdf "cotali" point13 point14 point10) (setq entder (entget (entlast))) (setq entder (subst (cons 1 txt1) (assoc 1 entder) entder)) (entmod entder) ) ) (if (or (= typecote 36) (= typecote 164)) (progn (command "COPIER" nonent "" "0,0" "0,0") (setq entder (entget (entlast))) (setq entder (subst (cons 51 (- angtextcote pi)) (assoc 51 entder) entder ) ) (setq entder (subst (cons 1 txt1) (assoc 1 entder) entder)) (entmod entder) ) ) ) ) ) ) (command "effacer" nonent "") (setq compt (1+ compt)) ) ) (setvar "osmode" osm) (setvar "clayer" cav) (command "-dimstyle" "R" stylecotebase) (princ) )
  25. BONJOUR j'ai fait ce petit lisp qui me permet de modifier une propriété dynamique numérique d'un bloc je tappe le nom de la propriétée et ca valeur modificative puis je sélectionne les blocs j'aimerais pouvoir faire l'inverse sélectionner les blocs et que l'on me propose les propriétés dynamique communes pour 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) )
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité