Bonjour,
Les routines LISP de cette archive ZIP, dont vous trouverez la liste ci-dessous, ont été créées par Patrick Dewevre, connu également sous le pseudo de Patrick_35
Patrick nous a quitté en mars 2019.
En accord avec sa famille, la dernière version de son travail est mis ici à disposition de la communauté Autodesk.
Vous pouvez me contacter à ce sujet mais sachez que je ne suis pas chargé de la maintenance et de l'évolution de ces programmes
Vous pouvez utiliser ce fil de discussion pour échanger au sujet de ces LISP et les faire vivre.
Patrick EMIN
animateur de la communauté Autodesk francophone
patrick.emin@autodesk.com
AST Afficher le dessin selon le style de tracé.
CAT Recopier les valeurs d’attributs d’un bloc vers un/des autres bloc(s), même si on n’a pas le même nombre d’attributs entre les blocs.
CHAT Créer un champ dynamique à un attribut pour lui indiquer la hauteur Z de l’objet.
COUP Couper des intersections de lignes par une distance donnée.
CPL Importer des calques depuis un dessin Autocad pas forcement ouvert.
CPS Importer des styles de côtes depuis un dessin Autocad pas forcement ouvert.
CPSCU Importer des scu depuis un dessin Autocad pas forcement ouvert.
DEF Définir comme paramètres par défaut selon les caractéristiques d’un objet sélectionné (calque, couleur, épaisseur, etc…)
DUC Mettre tous objets de tous les dessins d’un répertoire complet en couleur ducalque.
EPO Geler des calques apparents dans les fenêtres de présentations et plus en espace objet.
EXL v1.11 Exporter les présentations d’un dessin.
L’idée est de créer un nouveau dwg par onglet mais en ne conservant que ce qui est affiché dans la présentation.
Le dessin exporté se nomme en reprenant le nom du dessin actuel et en y ajoutant le nom de l’onglet.
Fonctionne avec une seule fenêtre par présentations
EXL V3.00 Exporter les présentations d’un dessin.
L’idée est de créer un nouveau dwg par onglet mais en ne conservant que ce qui est affiché dans la présentation.
Le dessin exporté se nomme en reprenant le nom du dessin actuel et en y ajoutant le nom de l’onglet.
Fonctionne avec plusieurs fenêtres par présentations.
Nécessite d’utiliser GEXL (fournit avec EXL) pour geler les calques dans les fenêtres des présentations exportées.
EXP Décomposer complètement une sélection, même les objets imbriqués.
FOG Changer facilement et rapidement de présentation.
Quand on a plusieurs présentations, rien de plus fastidieux que de faire un clic sur le bouton de défilement et plusieurs fois de suite tout en faisant une petite pause afin que l’onglet suivant s’affiche.
On choisit directement sa présentation.
GEF Gérer les différents calques dans les différentes fenêtres des présentations.
Par exemple, si on a ajouté un calque dans notre dessin et que l’on ne souhaite pas le voir apparaître dans plusieurs présentations sur plusieurs fenêtres, GEF le gèle facilement.
GRF Importer plusieurs folios (fichiers) depuis un répertoire dans un dessin unique. Ces folios seront insérés dans les présentations.
IAT Incrémenter des attributs.
Permet d’avoir une chaine de caractères avec une numérotation qui se suit.
Par exemple : B008-006, B008-007,B008-008
Par exemple : 001AA, 001AB, 001AC
INC Incrémenter des textes. Un tri est possible avec les coordonnées des textes afin d’obtenir une suite logique.
IND Incrémenter les indices des cartouches.
INSEDIT InsEdit (gile)
Redéfinir le point d'insertion des blocs.
IXL Insérer des blocs dans Autocad depuis une feuille Excel.
JAV Nettoyer un dessin en profondeur, des objets difficilement effaçables autrement qu’en programmation.
JSD Créer un jeu de sélection de ce qui a été dupliqué.
LATT simplifié Lier des attributs de manière croissante. Les attributs de mettent à jour de manière dynamiques. Par exemple, si on efface un attribut lié, alors les autres se renumérotent
afin que la suite logique reste la même.
LATT Lier des attributs de manière Identique, Croissante ou encore de faire une Somme. Les attributs de mettent à jour de manière dynamiques. Par exemple, si on efface un attribut lié, alors les autres se renumérotent afin que la suite logique reste la même.
LSTATT Décompte des blocs, mêmes les dynamiques avec la possibilité de distinguer les blocs avec attributs (sur autant d’attributs possible).
Possibilité aussi d’exporter les résultats dans un fichier texte.
Ce fichier, s’il est renommé en .xls sera ouvert sans problème avec Excel.
LXL Lier des Attributs, Textes, Mtexts ou des Rtexts avec Excel.
Le principe est de lier à une cellule Excel une valeur.
Les données peuvent être transmises depuis Autocad vers Excel, ou dans le sens inverse.
On peut travailler avec plusieurs fichiers, feuilles Excel dans plusieurs dessins Autocad
Le lisp inclus :
EXPLXL : Exporter des données de LXL dans un fichier texte afin de conserver une sauvegarde de ses données créé avec LXL.
IMPLXL : Récupérer la sauvegarde préalable de Explxl pour remettre à jour ses données.
XL->ATT: Mise à jour pour les scripts, d'Excel vers Autocad
ATT->XL: Mise à jour pour les scripts, d'Autocad vers Excel.
MAT Propager la valeur d'un attribut.
MES Mesurer en continu et avec cumul des distances directement dans le dessin.
MIM En cas de changement d’imprimante réseau ou tout simplement parce que le service informatique à redéfinit ses serveurs, MIM permet de réaffecter une nouvelle imprimante pour toutes les présentations choisies tout en conservant les paramètres d’impression.
MPL On configure correctement la mise en page d’une présentation. MPL permet la recopie de cette mise en page sur les présentations choisies.
ONG Gérer ses présentations. Reprends tous ce qui est sous le clic droit mais d’une manière plus ergonomique.
OOG Réorganiser les onglets d'une manière simple.
OU Localiser facilement des blocs. Quand on a un grand dessin et qu'on arrive pas à localiser ses blocs, OU dessine un trait de 0,0 au point d'insertion du bloc, ce qui permet d'enfin le localiser.
OUA La même chose que le lisp Ou, sauf qu'on peut différencier les blocs avec une valeur d'attribut.
PAT Changer la valeur d'un attribut dans plusieurs fichiers. Même principe de fonctionnement que MAT.
RA Faire un raccord sans joindre.
RB Refait tous les blocs de la couleur dubloc et sur le calque 0. (gile) à fait un super lisp avec edit_bloc, mais ayant déjà celui-là et qu'il ne pose pas de question...
RBLOC Remplacer un/des bloc(s) par un autre en conservant ou pas ses attributs, son échelle, ses propriétés dynamiques.
RECD Rechercher des blocs superposés.
RET Renommer des étiquettes des blocs.
RINS Redéfinir le point d'insertion d'un bloc simplement.
RON Renuméroter les onglets de 01 à ..
ROT_0 Laisser l'angle constamment à 0 de tous les attributs.
ROT Laisser l'angle de rotation constamment à 0 de certains attributs définit dans ces deux variables (setq Nom_bloc "UN_BLOC" Eti_Bloc '("ETI1" "ETI2" "ETI3")).
RXR Remplacer un xref en déchargeant l'ancien et en conservant les calques qui étaient gelés auparavant.
RXREF Donner un chemin relatif aux xrefs par rapport au dessin courant (s'ils sont sur le même lecteur).
SCRIPTOR Lisp qui créé et lance un script ou un lisp (depuis un lisp/script source) pour traiter tous les fichiers d'un répertoire et de ses sous-répertoires.
STRIPMTEXT Lisp de Steve Doman et Joe Burke.
Permet d'enlever au choix, les formats d'un texte.
SYN Synchroniser les attributs tout en conservant (ou pas), la valeur, position, angle et style de texte.
TOT Affiche le résultat du cumul de différentes longueurs (lignes, polylignes, arc, etc…)
UNVERR Déverrouiller toutes les fenêtres des présentations.
VERR Verrouiller toutes les fenêtres de toutes les présentations.
Hello
MERCI pour cette excellente Initiative qui rend hommage a Patrick_35 !
SVP ne pas oublier la Cagnotte pour la femme de Patrick_35 ... (note du modérateur, cagnotte désormais désactivée)
http://cadxp.com/topic/46868-cagnotte-pour-patrick-35/
Regards, Patrice
Patrice BRAUD
Bonjour,
désolé pour Patrick et encore plus pour son épouse.... condoléances!
Euh j'ai cliqué sur le lien pour la cagnotte mais ça mouline et ça s'ouvre pas, je sais pas si le lien est mort ou en panne, mais je voulais juste vous tenir au courant...
Bonjour Patrick aussi....
puisque vous n'êtes pas en charge du suivi des LISP de votre homonyme si talentueux, sauriez vous qui en a la charge, et vers qui je peux me tourner lorsque ces derniers ne veulent pas fonctionner..... en fait plus aucune routine LISP ne consent à fonctionner depuis que je suis passé en 2020.... auriez vous une idée???...
Bonjour @henry_cremieux personne en particulier n'est en charge de ces LISP. C’est à la communauté, c'est à dire nous tous de les faire vivre. Pour ce qui concerne la cagnotte, elle fonctionne, pas de problème.
Hello
RAPPEL: les routines LSP de Patrick_35 que des milliers de gens utilisent représentent N centaines d heures d investissement personnel et CE BENEVOLEMENT ! Encore MERCI Patrick !!
J utilise qq routines de Patrick sur ACAD MAP 2020 sans souci...
A propos SVP quelles routines par exemple ne fonctionnent pas sur ACAD 2020 ?
Regards, Patrice "triste"
Patrice BRAUD
Je viens de créer un fichier "PRJ" sur mon PC dont je joins le code ci-dessous.
Celui-ce permet de complier un fichier nommé "Patrick_35.FAS" dans le VisuaLISP intégré à AutoCAD.
Pour ceux qui sont intéressés un copier collé dans un bloc note et en changeant les répertoires où sont stockés les LISP pour la compilation.
Je pense ajouter un Lisp pour générer un TXT pour l'aide de chacune des fonctions en me servant de celle qui est déjà fournie et en ajoutant quelques notes.
-------------
;;; VLisp project file [V2.0] Patrick35 saved to:[C:/Temp] at:[12/12/20]
(VLISP-PROJECT-LIST
:NAME
Patrick_35
:OWN-LIST
("C:/Temp/les_LISP_de_Patrick_35/Api_xls"
"C:/Temp/les_LISP_de_Patrick_35/Ast"
"C:/Temp/les_LISP_de_Patrick_35/Benchmark"
"C:/Temp/les_LISP_de_Patrick_35/Cat"
"C:/Temp/les_LISP_de_Patrick_35/Chat"
"C:/Temp/les_LISP_de_Patrick_35/Coup"
"C:/Temp/les_LISP_de_Patrick_35/Cpl"
"C:/Temp/les_LISP_de_Patrick_35/Cps"
"C:/Temp/les_LISP_de_Patrick_35/Def"
"C:/Temp/les_LISP_de_Patrick_35/Duc"
"C:/Temp/les_LISP_de_Patrick_35/Epo"
"C:/Temp/les_LISP_de_Patrick_35/Exl"
"C:/Temp/les_LISP_de_Patrick_35/Exp"
"C:/Temp/les_LISP_de_Patrick_35/Explxl"
"C:/Temp/les_LISP_de_Patrick_35/Fog"
"C:/Temp/les_LISP_de_Patrick_35/Gef"
"C:/Temp/les_LISP_de_Patrick_35/Gexl"
"C:/Temp/les_LISP_de_Patrick_35/Grf"
"C:/Temp/les_LISP_de_Patrick_35/Iat"
"C:/Temp/les_LISP_de_Patrick_35/Impl"
"C:/Temp/les_LISP_de_Patrick_35/Implxl"
"C:/Temp/les_LISP_de_Patrick_35/Inc"
"C:/Temp/les_LISP_de_Patrick_35/Ind"
"C:/Temp/les_LISP_de_Patrick_35/InsEdit"
"C:/Temp/les_LISP_de_Patrick_35/Ixl"
"C:/Temp/les_LISP_de_Patrick_35/Jav"
"C:/Temp/les_LISP_de_Patrick_35/Jsd"
"C:/Temp/les_LISP_de_Patrick_35/Latt"
"C:/Temp/les_LISP_de_Patrick_35/Lstatt"
"C:/Temp/les_LISP_de_Patrick_35/Lxl"
"C:/Temp/les_LISP_de_Patrick_35/Mat"
"C:/Temp/les_LISP_de_Patrick_35/Mes"
"C:/Temp/les_LISP_de_Patrick_35/Mim"
"C:/Temp/les_LISP_de_Patrick_35/Mpl"
"C:/Temp/les_LISP_de_Patrick_35/Ong"
"C:/Temp/les_LISP_de_Patrick_35/Oog"
"C:/Temp/les_LISP_de_Patrick_35/Oua"
"C:/Temp/les_LISP_de_Patrick_35/Pat"
"C:/Temp/les_LISP_de_Patrick_35/Pre"
"C:/Temp/les_LISP_de_Patrick_35/Ra"
"C:/Temp/les_LISP_de_Patrick_35/Rb"
"C:/Temp/les_LISP_de_Patrick_35/Rbloc"
"C:/Temp/les_LISP_de_Patrick_35/Recd"
"C:/Temp/les_LISP_de_Patrick_35/Red"
"C:/Temp/les_LISP_de_Patrick_35/Ret"
"C:/Temp/les_LISP_de_Patrick_35/Rins"
"C:/Temp/les_LISP_de_Patrick_35/Ron"
"C:/Temp/les_LISP_de_Patrick_35/Rot"
"C:/Temp/les_LISP_de_Patrick_35/Rot_0"
"C:/Temp/les_LISP_de_Patrick_35/Rxr"
"C:/Temp/les_LISP_de_Patrick_35/Rxref"
"C:/Temp/les_LISP_de_Patrick_35/Scriptor"
"C:/Temp/les_LISP_de_Patrick_35/StripMtext"
"C:/Temp/les_LISP_de_Patrick_35/Syn"
"C:/Temp/les_LISP_de_Patrick_35/Tot"
"C:/Temp/les_LISP_de_Patrick_35/UnVerr"
"C:/Temp/les_LISP_de_Patrick_35/Verr")
:FAS-DIRECTORY
"C:\\Temp"
:TMP-DIRECTORY
"C:\\TEMP"
:PROJECT-KEYS
(:BUILD (:OPTIMIZE) :MERGED T :SAFE-MODE T :MSGLEVEL 1)
:CONTEXT-ID
:AUTOLISP
)
;;; EOF
-------------
Bonjour à tous,
J'ai appris à la mi-août 2019 le décès de Patrick.
Personne avec lequel j'ai pu échanger par mail pour faire le "bêta testeur" de sa routine LXL.
Ce génialissime monsieur était incroyable et d'une réactivité sans faille. Je ne le connaissais pas personnellement mais je garde un très bon souvenir de nos échanges.
Concernant cette routine LXL, quelqu'un aurait-il repris le flambeau ou la possibilité de faire des modifications ?
En effet depuis peu je ne dispose plus d'excel et donc plus possible de "rapatrier" mes données sur mes tableurs.
Y aurait-il une version de LXL qui puisse faire le lien entre Google Sheet et AutoCad?
Merci par avance.
Fabrice
Voici un Lisp que j'ai déjà distribué à mes collègues. Ce lisp je l'ai nommé : "Help_Patrick35.lsp"
Avec le menu qui est en place dans la société où je travaille, j'ai pu ajouté une ligne concernant l'usage des lisp du défunt Patrick_35 .
Bon après-midi,
J'utilise le SYN.LSP V1.50 de patrick_35 depuis un certain temps maintenant.
Fonctionne bien, mais est-il également possible de conserver la justification de l'attribut ?
Cordialement,
Jaap Marchal.
Ce message a été créé avec google translate, il peut donc contenir des erreurs.
;;;=================================================================
;;;
;;; SYN.LSP V1.50
;;;
;;; Synchroniser en conservant ou pas la valeur, la position
;;; et l'angle des attributs.
;;;
;;; Copyright (C) Patrick_35
;;;
;;;=================================================================
(defun patrick:synchro_att(cmd / att blo boite_dialogue choix def doc ent lst lstbl msg nombl
ecr_att oui-non question rep s sel str *errret*)
(defun *errret* (msg)
(or (member (strcase msg) '("FUNCTION CANCELLED" ""QUIT / EXIT ABORT"" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON"))
(princ (strcat "\nErreur : " msg))
)
(vla-endundomark doc)
(setq *error* s)
(princ)
)
(defun nombl(bl)
(if (vlax-property-available-p bl 'effectivename)
(vla-get-effectivename bl)
(vla-get-name bl)
)
)
(defun msg(js)
(if js
(princ (strcat "\nSélection actuel : " js))
(princ "\nSélection actuel : Tout")
)
)
(defun bits(var bit)
(boole 6 var bit)
)
(defun choix(chx cmd / bl js lst nom sel)
(princ "\nSélectionnez le(s) bloc(s) : ")
(and (ssget (list (cons 0 "insert") (cons 66 1)))
(progn
(vlax-for bl (setq sel (vla-get-activeselectionset doc))
(or (member (setq nom (nombl bl)) lst)
(setq lst (cons nom lst))
)
(redraw (vlax-vla-object->ename bl) 4)
)
(foreach nom lst
(and (eq (vla-get-isxref (vla-item (vla-get-blocks doc) nom)) :vlax-false)
(if js
(setq js (strcat js "," nom))
(setq js nom)
)
)
)
(vla-delete sel)
)
)
(or js (setq js chx))
(and cmd (msg js))
js
)
(defun boite_dialogue(titre / blo choix_aucun choix_lst choix_tout chx dcl fil js liste_bl
loc rech rep res sel str tmp vao)
(defun choix_lst(val / pos lst)
(while (setq pos (read val))
(if lst
(setq lst (strcat lst "," (nth pos liste_bl)))
(setq lst (nth pos liste_bl))
)
(setq val (substr val (+ 2 (strlen (itoa pos)))))
)
(setq js lst
chx "Nom"
)
)
(defun choix_tout(/ pos val str)
(setq pos 0)
(while (setq val (nth pos liste_bl))
(if str
(setq str (strcat str " " (itoa pos)))
(setq str (itoa pos))
)
(setq pos (1+ pos))
)
(setq js nil
chx "Tout"
sel str
)
(set_tile "lst" sel)
)
(defun choix_aucun()
(setq js nil
chx nil
sel ""
)
(set_tile "lst" sel)
)
(defun rech()
(and (member (substr str 1 loc) liste_bl)
(setq vao (itoa (- (length liste_bl) (length (member (substr str 1 loc) liste_bl)))))
(if sel
(setq sel (strcat sel " " vao))
(setq sel vao)
)
)
)
(setq tmp (vl-filename-mktemp "ret" nil ".dcl")
fil (open tmp "w")
)
(foreach txt '( "ret : dialog {"
" key = titre;"
" is_cancel = true;"
" fixed_width = true;"
" alignment = centered;"
" : list_box {label = \"Blocs\"; key = \"lst\"; multiple_select = true; width = 40; height = 20;}"
" : boxed_column {"
" label = \"Conserver dans les attributs\";"
" : row {"
" : column {"
" : toggle {label = \"Les valeurs\"; key = \"val\";}"
" : toggle {label = \"Les styles\"; key = \"sty\";}"
" }"
" : column {"
" : toggle {label = \"Les positions\"; key = \"pos\";}"
" : toggle {label = \"Les angles\"; key = \"ang\";}"
" }"
" }"
" spacer;"
" }"
" spacer;"
" : row {"
" : button {label = \"Tout\"; key = \"tout\";}"
" : button {label = \"Aucun\"; key = \"aucun\";}"
" : button {label = \">>\"; key = \"sel\";}"
" ok_cancel;"
" }"
"}"
)
(write-line txt fil)
)
(close fil)
(vlax-for blo (vla-get-blocks doc)
(or (wcmatch (vla-get-name blo) "`**,*|*")
(eq (vla-get-isxref blo) :vlax-true)
(vlax-for ent blo
(and (eq (vla-get-objectname ent) "AcDbAttributeDefinition")
(not (member (vla-get-name blo) liste_bl))
(setq liste_bl (cons (vla-get-name blo) liste_bl))
)
)
)
)
(setq liste_bl (acad_strlsort liste_bl)
dcl (load_dialog tmp)
sel ""
)
(while (not (member res '(0 1)))
(new_dialog "ret" dcl "")
(start_list "lst")
(mapcar 'add_list liste_bl)
(end_list)
(set_tile "titre" titre)
(set_tile "lst" sel)
(and (eq (logand val 2) 2)
(set_tile "val" "1")
)
(and (eq (logand val 4) 4)
(set_tile "pos" "1")
)
(and (eq (logand val 😎 8)
(set_tile "ang" "1")
)
(and (eq (logand val 16) 16)
(set_tile "sty" "1")
)
(action_tile "lst" "(choix_lst $value)")
(action_tile "tout" "(choix_tout)")
(action_tile "aucun" "(choix_aucun)")
(action_tile "val" "(setq val (bits val 2))")
(action_tile "pos" "(setq val (bits val 4))")
(action_tile "ang" "(setq val (bits val 8))")
(action_tile "sty" "(setq val (bits val 16))")
(action_tile "sel" "(done_dialog 2)")
(action_tile "accept" "(done_dialog 1)")
(action_tile "cancel" "(done_dialog 0)")
(setq res (start_dialog))
(cond
((eq res 1)
(setq rep (list chx js val))
)
((eq res 2)
(and (setq js (choix js nil))
(progn
(setq str js
sel nil
chx "Nom"
)
(while (setq loc (vl-string-search "," str))
(rech)
(setq str (substr str (+ 2 loc)))
)
(rech)
(or sel (setq sel ""))
)
)
)
(T
(setq rep (list nil nil val))
)
)
)
(unload_dialog dcl)
(vl-file-delete tmp)
rep
)
(defun question(/ choixbl lst rep sel)
(defun choixbl(chx / js nom pos sel)
(defun nom(txt / str)
(setq txt (vl-string-left-trim " " txt)
txt (vl-string-right-trim " " txt)
)
(if (tblsearch "block" txt)
(setq str txt)
(princ (strcat "\nLe bloc \"" txt "\" n'existe pas."))
)
(and str
(if (and js (wcmatch (strcase js) (strcase (strcat str "," str "`,*" ",*`," str "`,*,*`," str))))
(princ (strcat "\nLe bloc \"" str "\" est déjà selectionné."))
(if js
(setq js (strcat js "," str))
(setq js str)
)
)
)
)
(setq js chx)
(while (/= (setq sel (getstring t "\nIndiquez le(s) nom(s) du/des bloc(s) : ")) "")
(while (setq pos (vl-string-search "," sel))
(nom (substr sel 1 pos))
(setq sel (substr sel (+ 2 pos)))
)
(nom sel)
(msg js)
)
(and (eq js chx) (msg js))
js
)
(setq sel "Tout" rep sel)
(while (/= sel "Fin")
(initget "Tout Sélection Nom Fin")
(or (setq sel (getkword (strcat "\nChoix des blocs [Tout/Sélection/Nom/Fin] <" sel "> : ")))
(progn
(setq sel rep)
(and (eq rep "Tout")
(setq sel "Fin")
)
)
)
(cond
((eq sel "Tout")
(setq rep sel)
)
((eq sel "Sélection")
(setq rep sel
lst (choix lst T)
)
)
((eq sel "Nom")
(setq rep sel
lst (choixbl lst)
)
)
)
)
(list rep lst)
)
(defun oui-non(que o-n / rep)
(initget "Oui Non")
(setq rep (getkword (strcat "\n" que " [Oui/Non] <" (if (eq (logand val o-n) o-n) "Oui" "Non") "> : ")))
(cond
((eq rep "Oui")
(or (eq (logand val o-n) o-n)
(setq val (boole 6 val o-n))
)
)
((eq rep "Non")
(and (eq (logand val o-n) o-n)
(setq val (boole 6 val o-n))
)
)
)
T
)
(defun ecr_att(a b c d)
(and (vl-catch-all-error-p (vl-catch-all-apply 'vlax-put (list b d c)))
(vl-catch-all-apply 'vlax-put (list a d c))
)
)
(vl-load-com)
(setq doc (vla-get-activedocument (vlax-get-acad-object))
s *error*
*error* *errret*
)
(vla-startundomark doc)
(if (setq val (getenv "Patrick_35_syn"))
(setq val (atoi val))
(setq val 0)
)
(if (and (or
(and (eq cmd 0)
(setq rep (boite_dialogue "SYN V1.50")
val (nth 2 rep)
rep (list (nth 0 rep) (nth 1 rep))
)
)
(and (eq cmd 1)
(setq rep (question))
(oui-non "Conserver la valeur des attributs" 2)
(oui-non "Conserver la position des attributs" 4)
(oui-non "Conserver l'angle des attributs" 8)
(oui-non "Conserver le style des attributs" 16)
)
)
(car rep)
)
(progn
(or (eq (car rep) "Tout")
(cadr rep)
(setq rep (list "Tout" nil))
)
(and
(if (cadr rep)
(ssget "_x" (list (cons 0 "insert") (cons 2 (strcat "`**," (cadr rep))) (cons 66 1)))
(ssget "_x" (list (cons 0 "insert") (cons 66 1)))
)
(progn
(vlax-for blo (setq sel (vla-get-activeselectionset doc))
(setq str (nombl blo)
att nil
)
(and (or (eq (car rep) "Tout")
(and
(cadr rep)
(wcmatch (strcase (cadr rep)) (strcase (strcat str "," str "`,*" ",*`," str "`,*,*`," str)))
)
)
(progn
(foreach ent (vlax-invoke blo 'getattributes)
(setq att (cons (list ent
(vlax-get ent 'textstring)
(vlax-get ent 'insertionpoint)
(vlax-get ent 'textalignmentpoint)
(vlax-get ent 'alignment)
(vlax-get ent 'rotation)
(vlax-get ent 'stylename)
(vlax-get ent 'height)
(vlax-get ent 'scalefactor)
(vlax-get ent 'obliqueangle)
)
att
)
)
)
(setq lst (cons (cons blo att) lst))
(or (member (nombl blo) lstbl)
(setq lstbl (cons (nombl blo) lstbl))
)
)
)
)
(vla-delete sel)
(and lst
(progn
(setq def (getvar "cmdecho"))
(setvar "cmdecho" 0)
(vlax-for blo (vla-get-blocks doc)
(and (eq (vla-get-islayout blo) :vlax-false)
(setq str (vla-get-name blo))
(member str lstbl)
(progn
(vl-cmdf "_.attsync" "_name" str)
(princ (strcat (chr 😎 " pour le bloc " str "."))
)
)
)
(setvar "cmdecho" def)
(or (zerop val)
(foreach blo lst
(mapcar '(lambda(a b)
(and (eq (logand val 2) 2)
(vl-catch-all-apply 'vlax-put (list a 'textstring (nth 1 b)))
; (ecr_att a (nth 0 b) (nth 1 b) 'textstring)
)
(and (eq (logand val 16) 16)
(progn
(vl-catch-all-apply 'vlax-put (list a 'stylename (nth 6 b)))
(vl-catch-all-apply 'vlax-put (list a 'height (nth 7 b)))
(vl-catch-all-apply 'vlax-put (list a 'scalefactor (nth 8 b)))
(vl-catch-all-apply 'vlax-put (list a 'obliqueangle (nth 9 b)))
; (ecr_att a (nth 0 b) (nth 6 b) 'stylename)
; (ecr_att a (nth 0 b) (nth 7 b) 'height)
; (ecr_att a (nth 0 b) (nth 8 b) 'scalefactor)
; (ecr_att a (nth 0 b) (nth 9 b) 'obliqueangle)
)
)
(and (eq (logand val 4) 4)
(vl-catch-all-apply 'vla-move (list a (vla-get-insertionpoint a) (vlax-3d-point (nth 2 b))))
; (ecr_att a (nth 0 b) (nth 2 b) 'insertionpoint)
)
(and (eq (logand val 😎 8)
(vl-catch-all-apply 'vlax-put (list a 'rotation (nth 5 b)))
; (ecr_att a (nth 0 b) (nth 5 b) 'rotation)
)
)
(vlax-invoke (car blo) 'getattributes)
(reverse (cdr blo))
)
)
)
(setenv "Patrick_35_syn" (itoa val))
)
)
)
)
)
)
(vla-endundomark doc)
(setq *error* s)
(princ)
)
(defun c:syn()
(if (zerop (getvar "cmdactive"))
(patrick:synchro_att 0)
(patrick:synchro_att 1)
)
)
(defun c:-syn()
(patrick:synchro_att 1)
)
(setq nom_lisp "SYN")
(if app
(if (= (strcase (substr app (1+ (- (strlen app) (strlen nom_lisp))) (strlen nom_lisp))) nom_lisp)
(princ (strcat "..." nom_lisp " chargé."))
(princ (strcat "\n" nom_lisp ".LSP Chargé.....Tapez " nom_lisp " pour l'éxecuter.")))
(princ (strcat "\n" nom_lisp ".LSP Chargé......Tapez " nom_lisp " pour l'éxecuter.")))
(setq nom_lisp nil)
(princ)
Bonjour,
Je ne connaissais pas Patrick mais je souhaiterais faire connaître son œuvre au travers d'une vidéo test de quelques lisp de ce génie d'autocad, est-ce que cela pourrait se faire histoire de ramener quelques fans d'autocad ici ?
À bientôt,
Vincent
Bonjour @Vincent_CAVUOTO , oui c'est toujours possible, cela permettrait aux gens qui sont plutôt débutants dans l'AutoLISP de savoir ne serait-ce que comment charger et lancer un programme. Et puis de donner quelques exemples de ce qu'il a réalisé effectivement.
Salut à toutes et à tous....
Bien qu'actuellement occupé "pour le moins" à tenter de REVTER, je n'en reste pas moins comme bon nombre d'entre nous, un fan absolu du si regretté Patrick_35... Du coup si je peux filer u coup de main ce sera avec plaisir, sinon visionner votre "œuvre" le sera certainement aussi!!!... C'est juste la meilleure idée de l'année!!!...
Un grand BRAVO @Vincent_CAVUOTO pour cette initiative géniale.
Merci à vous, très sympa de votre part 👌
Ce sera avec plaisir, je suis passionné d'Autocad et c'est juste la reconnaissance méritée pour notre ami Patrick 👍
Ravi de participer à cette belle communauté Autodesk sur laquelle je n'avais pas pris le temps de suivre les sujets.
Au plaisir de vous lire souvent maintenant 😉
Je mettrai le lien de la vidéo dès que ce sera bon.
À bientôt,
Vincent
Bonjour,
Voici donc la vidéo pour faire connaître le travail fabuleux de Patrick_35.
J'espère que cette vidéo vous plaira et qu'elle permettra d'aider un maximum de personnes 😉
La vidéo est ici :
👉 Les Lisp de Patrick_35 pour AutoCAD
A bientôt,
Vincent
Hello @Vincent_CAVUOTO , @patrick.emin
MERCI pour la Video et voici un vieux (2009) Trombinoscope de cadxp.com ...
Au fait est ce toi Christian @rebcao qui a realise cette image ?
La Sante, Bye, Patrice (The Old French EE Froggy)
Patrice BRAUD
Coucou
Je me souviens de cette image, à l'époque, je sévissais dans l'océan Indien, putain ce qu'on y est bien !
Mayotte, Madagascar... et les températures (et les gens) m'allaient bien mieux que ce que je dois subir aujourd'hui.
Les images ont ce don de nous transporter dans le temps en ravivant les souvenirs, merci de cette mise à jour de mémoire.
Amicalement
DA
Bonjour, la cagnotte envoie sur un lien paypal qui n existe plus.
Merci !
Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.