-
Compteur de contenus
6 374 -
Inscription
-
Dernière visite
-
Jours gagnés
30
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Patrick_35
-
Salut L'important n'est pas le nombre mais la qualité des réponses. @+
-
[Résolu] Insérer un bloc par rapport à l'attribut d'un autre bloc
Patrick_35 a répondu à un(e) sujet de Blabla dans AutoCAD 2011
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 ;) @+ -
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) ) @+
-
[Résolu] Comment lister tous les lisp au démarage d'AutoCAD
Patrick_35 a répondu à un(e) sujet de Steven dans AutoCAD 2015
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) ) @+ -
Salut C'est clair comme explication :D @+
-
[Résolu] Comment lister tous les lisp au démarage d'AutoCAD
Patrick_35 a répondu à un(e) sujet de Steven dans AutoCAD 2015
Salut Je ne la connaissais pas celle-ci. Merci @+ -
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. @+
-
[Résolu] Comment lister tous les lisp au démarage d'AutoCAD
Patrick_35 a répondu à un(e) sujet de Steven dans AutoCAD 2015
Salut Sinon, pour trouver les lisps chargés (vl-remove-if-not '(lambda(x)(eq (substr x 1 2) "C:")) (atoms-family 1)) @+ -
Problème mise-à-jour formule champs et attributs
Patrick_35 a répondu à un(e) sujet de Tristan dans AutoCAD LT 2014
Salut Lili Dans le champ --> Format supplémentaire... --> Suffixe @+ -
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é @+
-
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) ) @+
-
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 @+
-
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 ? @+
-
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) ) @+
-
Tu as surement fait un mauvais copier/coller. Refais le directement sur autocad pour voir @+
-
Comment enlève-t-on un fichier de liaison de données?
Patrick_35 a répondu à un(e) sujet de Steven dans AutoCAD 2009
Tu le retrouves ici @+ -
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) ) @+
-
Comment enlève-t-on un fichier de liaison de données?
Patrick_35 a répondu à un(e) sujet de Steven dans AutoCAD 2009
Salut Jav le fait @+ -
Calques - Exporter liste sur plusieurs fichiers
Patrick_35 a répondu à un(e) sujet de GregRA dans AutoCAD 2014
Salut Avec un lisp de Lee Mac @+ -
Salut Double clic sur un attribut --> Options de texte --> Rotation Sinon, comme l'indique Georges2 @+
-
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. @+
-
aide LISP demandé - creation calques
Patrick_35 a répondu à un(e) sujet de cactus_ben dans AutoCAD 2015
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) @+ -
aide LISP demandé - creation calques
Patrick_35 a répondu à un(e) sujet de cactus_ben dans AutoCAD 2015
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 -
Comment créer un bloc dans un lisp ?
Patrick_35 a répondu à un(e) sujet de famaice dans LISP et Visual LISP
Salut Avec une petite recherche. Par exemple ici ou là @+ -
LISP de selection et de modification
Patrick_35 a répondu à un(e) sujet de Rhyuk dans Débuter en LISP
Bonjour J'arrive un peu tard mais c'est juste pour indiquer que la commande filtrer (_filter) est très puissante. Voir ce sujet @+
