Aller au contenu

Patrick_35

Membres
  • Compteur de contenus

    6 374
  • Inscription

  • Dernière visite

  • Jours gagnés

    30

Tout ce qui a été posté par Patrick_35

  1. Patrick_35

    Type de ligne flèches

    Salut L'important n'est pas le nombre mais la qualité des réponses. @+
  2. Salut Par exemple en vlisp (defun c:blo(/ blo doc esp sel) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (and (ssget (list (cons 0 "insert") (cons 2 "SRVPNO2") (cons 66 1))) (progn (if (eq (getvar "cvport") 1) (setq esp (vla-get-paperspace doc)) (setq esp (vla-get-modelspace doc)) ) (vlax-for blo (setq sel (vla-get-activeselectionset doc)) (foreach att (vlax-invoke blo 'getattributes) (and (eq (vla-get-tagstring att) "DESC2") (tblsearch "block" (vla-get-textstring att)) (vla-insertblock esp (vla-get-insertionpoint blo) (vla-get-textstring att) (vla-get-xScalefactor blo) (vla-get-yScalefactor blo) (vla-get-zScalefactor blo) (vla-get-rotation blo) ) ) ) ) (vla-delete sel) ) ) (vla-endundomark doc) (princ) ) Bruno : J'ai vu que tu traînais tes guêtres un peu partout dans les forum lisps ;) @+
  3. Patrick_35

    Import

    Salut Je l'avais fait vite fait, mais je pensais qu'en cas d'erreur, tu aurais pu corriger. Le lisp corrigé et testé (defun C:IMPORT (/ filename tables dirbox rep) (defun dirbox(txt / cdl rep) (if (setq cdl (vlax-create-object "Shell.Application")) (progn (and (setq rep (vlax-invoke cdl 'browseforfolder 0 txt 512 "")) (setq rep (vlax-get-property (vlax-get-property rep 'self) 'path)) ) (vlax-release-object cdl) ) ) rep ) (and (setq tables (OptionBox "Import" "Choisir les tables à importer" (mapcar 'cons '("Blocks" "DimStyles" "Layers" "LineTypes" "TextStyles" "UserCoordinateSystems" "Views") '("Blocs" "Styles de cotes" "Calques" "Types de ligne" "Styles de texte" "UCS" "Vues") ) T ) ) (setq rep (dirbox "Choisissez un répertoire pour traiter tous les dessins.")) (foreach filename (append (vl-directory-files rep "*.dwg" 1) (vl-directory-files rep "*.dwt" 1)) (if (gc:ImportTableRecords tables (strcat rep "/" filename)) (princ (strcat "\nL'importation du fichier " filename " terminée.")) (princ (strcat "\nL'importation du fichier " filename " a échoué.")) ) ) ) (princ) ) @+
  4. Salut Avec ceci ? (defun c:app( / cle fin deb val) (setq cle (strcat "HKEY_CURRENT_USER\\" (vlax-machine-product-key) "\\Profiles\\" (vla-get-activeprofile (vla-get-profiles (vla-get-preferences (vlax-get-acad-object)))) "\\Dialogs\\Appload\\Startup" ) deb 0 ) (and (setq fin (vl-registry-read cle "numstartup")) (while (< deb (atoi fin)) (setq deb (1+ deb) val (vl-registry-read cle (strcat (itoa deb) "startup")) ) (princ (strcat "\n" val)) ) ) (princ) ) @+
  5. Salut C'est clair comme explication :D @+
  6. Salut Je ne la connaissais pas celle-ci. Merci @+
  7. Salut Non car un bloc dynamique peut avoir d'autres besoin que des blocs imbriqués avec des actions de visibilités. C'est aussi comptabilisé. Il faut quand même être tordu pour imbriquer un bloc dynamique dans un bloc dynamique car le bloc imbriqué devient statique et perds son sens premier. J'y avais pensé, mais je me suis dit que non, quand même pas. Ben si. ;) Là, ça devient une usine à gaz. Plus tard si j'ai du temps, à moins que l'on prenne la suite. @+
  8. Salut Sinon, pour trouver les lisps chargés (vl-remove-if-not '(lambda(x)(eq (substr x 1 2) "C:")) (atoms-family 1)) @+
  9. Salut Lili Dans le champ --> Format supplémentaire... --> Suffixe @+
  10. Patrick_35

    Import

    Salut Tu ajoutes dans le lisp la routine pour sélectionner un répertoire (defun dirbox(txt / cdl rep) (if (setq cdl (vlax-create-object "Shell.Application")) (progn (and (setq rep (vlax-invoke cdl 'browseforfolder 0 txt 512 "")) (setq rep (vlax-get-property (vlax-get-property rep 'self) 'path)) ) (vlax-release-object cdl) ) ) rep ) Et tu remplaces le choix du fichier (setq filename (getfiled "Choisir le fichier source" "" "dwg;dwt" 292)) Par ceci pour traiter tous les fichiers d'un répertoire (and (setq rep (dirbox "Choisissez un répertoire pour traiter tous les dessins.")) (foreach filename (append (vl-directory-files rep "*.dwg" 1) (vl-directory-files rep "*.dwt" 1)) (if (gc:ImportTableRecords tables filename) (princ (strcat "\nL'importation du fichier " filename " terminée.")) (princ (strcat "\nL'importation du fichier " filename " a échoué.")) ) ) ) Tu supprimes ensuite ceci, qui correspond au traitement d'un fichier (déjà traité auparavant) (if (gc:ImportTableRecords tables filename) (alert "Importation terminée") (alert "L'importation a échoué") ) ps : non testé @+
  11. Ok, merci. Il faudrait que je m'y mette un jour sur cette extraction de données ;) Sinon, j'ai continué cette histoire de blocs imbriqués et ce n'est pas aussi compliqué que je le pensais (defun c:cnd(/ blo doc ent sel tbl liste_dyn bloc_imbrique decompte) (defun liste_dyn(ent) (cons (vla-get-effectivename ent) (mapcar '(lambda(x)(list (vlax-get x 'propertyname) (vlax-get x 'value))) (vl-remove-if '(lambda(x)(eq (vla-get-show x) :vlax-false)) (vlax-invoke ent 'getdynamicblockproperties) ) ) ) ) (defun bloc_imbrique(nom / ele ok) (vlax-for ele (vla-item (vla-get-blocks doc) nom) (and (eq (vla-get-objectname ele) "AcDbBlockReference") (eq (vla-get-visible ele) :vlax-true) (or (bloc_imbrique (vla-get-name ele)) (setq blo (cons (vla-get-effectivename ele) blo) ok T ) ) ) ) ok ) (defun decompte(tbl / js lst n) (while tbl (setq n (length tbl) js (car tbl) tbl (vl-remove js tbl) lst (cons (cons (- n (length tbl)) js) lst) ) ) lst ) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (and (ssget (list (cons 0 "insert"))) (progn (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (and (eq (vla-get-isdynamicblock ent) :vlax-true) (setq tbl (cons (liste_dyn ent) tbl)) (bloc_imbrique (vla-get-name ent)) ) ) (vla-delete sel) (mapcar '(lambda(x) (princ "\n") (repeat (- 6 (strlen (itoa (car x)))) (princ " ") ) (princ (car x)) (princ (strcat " " (cadr x))) (mapcar '(lambda(x) (princ (strcat " ... \"" (car x) " : ")) (princ (cadr x)) (princ "\"") ) (cddr x) ) ) (vl-sort (decompte tbl) '(lambda(a B)(< (cadr a) (cadr B)))) ) (and blo (princ "\n\n Bloc imbriqués :")) (mapcar '(lambda(x) (princ "\n") (repeat (- 6 (strlen (itoa (car x)))) (princ " ") ) (princ (car x)) (princ (strcat " " (cdr x))) ) (vl-sort (decompte blo) '(lambda(a B)(< (cdr a) (cdr B)))) ) ) ) (vla-endundomark doc) (princ) ) @+
  12. C'est bien ce qu'il me semblait, il faut compter des blocs en fonction des états de visibilité. Le problème avec les blocs dynamiques, c'est que l'on peut faire plusieurs choses comme les paramètres d'étirement. Dans le cas présent, programmer un décompte avec les blocs imbriqués n'est pas simple et alourdi considérablement le temps de traitement. Le présent lisp indique et fait un trie sur les états de visibilités et comme tu sais à quoi ils correspondent, un petit tout sur Excel et le tour est joué. ps : le lisp actuel est passe-partout. On peut même faire des métrés comme pour les chemins de câbles (ou gaines) avec un paramètre de longueur et de largeur. pps : rien ne t'interdit de reprendre la suite @+
  13. Je rejoins Lecrabe, d'autant qu'un bloc dynamique imbriqué dans un autre bloc n'est plus dynamique. Et avec des blocs imbriqués qui s'affiche ou pas selon les visibilités ? @+
  14. Salut et tous mes voeux de bonheur et de santé pour cette nouvelle année. J'avais fait au plus simple mais comme tu le demandes (defun c:cnd(/ js lst n tbl) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (and (ssget (list (cons 0 "insert"))) (progn (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (and (eq (vla-get-isdynamicblock ent) :vlax-true) (setq tbl (cons (cons (vla-get-effectivename ent) (mapcar '(lambda(x)(list (vlax-get x 'propertyname) (vlax-get x 'value))) (vl-remove-if '(lambda(x)(eq (vla-get-show x) :vlax-false)) (vlax-invoke ent 'getdynamicblockproperties) ) ) ) tbl ) ) ) ) (vla-delete sel) (while tbl (setq n (length tbl) js (car tbl) tbl (vl-remove js tbl) lst (cons (cons (- n (length tbl)) js) lst) ) ) (mapcar '(lambda(x) (princ "\n") (repeat (- 6 (strlen (itoa (car x)))) (princ " ") ) (princ (car x)) (princ (strcat " " (cadr x))) (mapcar '(lambda(x) (princ (strcat " ... \"" (car x) " : ")) (princ (cadr x)) (princ "\"") ) (cddr x) ) ) (vl-sort lst '(lambda(a B)(< (cadr a) (cadr B)))) ) ) ) (vla-endundomark doc) (princ) ) @+
  15. Tu as surement fait un mauvais copier/coller. Refais le directement sur autocad pour voir @+
  16. Tu le retrouves ici @+
  17. Salut Je pense que l'on va boire un coup à ma santé ;) (defun c:cnd(/ js lst n tbl) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (and (ssget (list (cons 0 "insert"))) (progn (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (and (eq (vla-get-isdynamicblock ent) :vlax-true) (setq tbl (cons (cons (vla-get-effectivename ent) (vlax-get (car (vlax-invoke ent 'getdynamicblockproperties)) 'value) ) tbl ) ) ) ) (vla-delete sel) (while tbl (setq n (length tbl) js (car tbl) tbl (vl-remove js tbl) lst (cons (cons (- n (length tbl)) js) lst) ) ) (mapcar '(lambda(x) (princ "\n") (repeat (- 4 (strlen (itoa (car x)))) (princ " ") ) (princ (car x)) (princ (strcat " " (cadr x) "..." )) (princ (cddr x)) ) (vl-sort lst '(lambda(a B)(if (eq (cadr a) (cadr B)) (< (cddr a) (cddr B)) (< (cadr a) (cadr B)) ) ) ) ) ) ) (vla-endundomark doc) (princ) ) @+
  18. Salut Jav le fait @+
  19. Salut Avec un lisp de Lee Mac @+
  20. Patrick_35

    rotation attribut

    Salut Double clic sur un attribut --> Options de texte --> Rotation Sinon, comme l'indique Georges2 @+
  21. Salut Patrick Cela fonctionne sur ma 2014, aussi bien avec un lisp qu'avec une commande. Le lisp de test (defun c:test() (setq js (ssget)) ) Je sélectionne un bloc --> Clic droit + Sélection similaire Je lance la commande ou le lisp Je lance une nouvelle commande, par exemple déplacer et ensuite p (ou _p pour previous) et je retrouve ma sélection. Peut-être une variable ? J'ai regardé avec les variables pick*, mais que nenni. @+
  22. Tu lances le lisp et avec les 3 petits points sur le bouton en bas à droite. (c'est mémorisé dans Autocad et cela permet de changer ensuite au besoin) @+
  23. Salut Un lisp qui permet d'importer ou de recopier des calques depuis un gabarit ou un dessin. @+ ps : Correction d'un bug si le fichier n'existe plus --> V1.01 Cpl.lsp
  24. Salut Avec une petite recherche. Par exemple ici ou là @+
  25. Bonjour J'arrive un peu tard mais c'est juste pour indiquer que la commande filtrer (_filter) est très puissante. Voir ce sujet @+
×
×
  • 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é