MEIGNENN Posté(e) le 30 mars 2021 Posté(e) le 30 mars 2021 On 10/03/2010 at 11:10, (gile) said: Salut, Il ne s'agirait pas d'une "amélioration" mais d'une toute autre routine le principe étant fondamentalement différent. Regarde le LISP chariot qui devrait faire ce que tu demandes. Bonjour, Le lien du LISP Chariot ne semble plus disponible et les versions modifiées que j'ai pu glaner dans les différents échanges semblent ne pas fonctionnés (erreur: structure incorrecte de la liste en entrée). Et en essayant de corriger la structure j'obtiens une erreur sur la partie PointAfter avec le vl-remove-if. Après c'est des échanges de 2010 donc c'est peut-être normal? Nota: Je voulais essayer ce lisp car la fonction mesurer ou réseau de trajectoire en courbe ne positionne pas le deuxième point du bloc sur la polyligne.
(gile) Posté(e) le 30 mars 2021 Auteur Posté(e) le 30 mars 2021 Désolé, je ne comprends pas de quoi tu parles. 1 hour ago, MEIGNENN said: erreur: structure incorrecte de la liste en entrée indique en général un problème d’appariement de parenthèses, bien faire attention quand on fait le copier coller. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Luna Posté(e) le 15 avril 2021 Posté(e) le 15 avril 2021 @(gile), je remarque que les liens situés dans ton 1er message aboutissent sur une page "File not found". Je précise qu'il s'agit des liens (donc en souligné à la suite du mot "lien : ") et non les liens associés aux commandes en gras. Cf. exemple ci-dessous : On 15/04/2007 at 19:02, (gile) said: liens : Incrémenter les suffixes ; Lisp Numeros...besoin d'une correction. Je ne sais pas vers quoi ces liens allaient, ni même si le soucis est récent ou non, c'est juste une remarque en passant :3 Bisous, Luna
(gile) Posté(e) le 15 avril 2021 Auteur Posté(e) le 15 avril 2021 Salut Luna, il s'agit des liens vers les sujets d'où sont issus les routines (ou l'idée des routines) ces liens datent d'avant la première refonte de CADxp lors de son rachat vers 2010 et ils ont tous été perdus lors de cette refonte. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Luna Posté(e) le 15 avril 2021 Posté(e) le 15 avril 2021 oki merci pour l'info, c'est bien ce qui me semblait :3 Bisous, Luna
La Lozère Posté(e) le 14 septembre 2021 Posté(e) le 14 septembre 2021 Bonjour @(gile), J'aurais une petite doléance concernant ton lisp "Edit_Bloc". Serait-il possible de l'agrémenter afin d'y ajouter la possibilité de mettre la transparence en "Ducalque" ou "Dubloc". Il y a tout sauf cette propriété. En tout cas, merci pour ce prog qui est fort utile quand on tombe sur des blocs mal monté.... www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas
benoitlacroix Posté(e) le 27 septembre 2021 Posté(e) le 27 septembre 2021 Bonjour à toutes et à tous j'aurai également une "petite" demande concernant ton LISP "Edit_Bloc". le changement de propriété ce fait pour l'ensemble des objet dans le bloc. Mais serait-il possible de pouvoir faire une sélection des objet dans le bloc à modifier et ne modifier que cette sélection? par exemple dans mon bloc j'ai des objet en vert et en blanc, je ne veux mettre que les objet en blanc en couleur du bloc. Merci d'avance pour la réponse et merci pour tous ces excellents programme que tu partage. Le trlalala du nain - Moi c'que j'aime dans les cavernes - C'est qu'on peut allez piocher. - on peut extraire du minerais - Et des pierres pour les tailler
(gile) Posté(e) le 27 septembre 2021 Auteur Posté(e) le 27 septembre 2021 @La Lozère @benoitlacroix Je n'ai pas l'intention de modifier Edit_Bloc (comme je l'ai dit précédemment). L'histoire de cette routine a commencé avant l'apparition de l'éditeur de bloc. il me semble que ce que vous demandez est relativement simple à faire via cet éditeur. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
La Lozère Posté(e) le 27 septembre 2021 Posté(e) le 27 septembre 2021 Bonjour @(gile), Merci de ton retour. Effectivement pour l'instant je fais comme ça. Un des avantages de ta routine est de pouvoir traiter de nombreux blocs différents en même temps. Pratique quand on reçoit un fichier un peu mal foutu. www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas
Luna Posté(e) le 13 décembre 2021 Posté(e) le 13 décembre 2021 Coucou, Pour celles et ceux que chat intéresse, j'utilise très souvent la fonction (ListBox) de @(gile) mais légèrement remaniée pour récupérer des infos utilisateurs de manière simple. Ce n'est que récemment que je me suis dit que l'on pouvait améliorer la fonction une nouvelle fois en ajoutant un filtre de recherche (= edit_box) à la boîte de dialogue. Cela permet à l'utilisateur de filtrer la liste affichée si celle-ci est un peu longue. Ci-dessous le code remanié de la fonction (ListBox) : ;--- Nom de la fonction []-----------------------[] ListBox []-----------------------[] ;--- Date de création > 15/04/2007 ;--- Dernière modification > 13/12/2021 ;--- Auteur(e) > Luna ;--- Version > 3.0.0 ;--- Classe > "DbLst" ;--- But et domaine d'application ; ; > Permet de générer un fichier temporaire .dcl pour une boîte de dialogue de sélection unique/multiple d'éléments dans une liste; ; passée en argument. ; ; ; ;--- Déclaration des arguments ; ; La fonction (ListBox) possède 5 argument(s) : ; ; ¤ title > correspond au titre de la boîte de dialogue. ; ; (type title) = 'STR | Ex. : "Sélection des calques", "VP-RADPURGE : Sélection des présentations", "", nil ; ; ¤ msg > correspond au message que l'on souhaite afficher au-dessus de la popup-list. ; ; (type msg) = 'STR | Ex. : "Choix multiple :", "Sélectionner un calque", "", nil ; ; ¤ lst > correspond à la liste que l'on souhaite afficher dans la popup-list. ; ; (type lst) = 'LST | Ex. : '(label1 label2 ...), ... ; ; ¤ value > correspond à la valeur par défaut que l'on souhaite sélectionner à l'ouverture de la BdL. ; ; (type value) = 'SYM | Ex. : (getvar "CLAYER"), 1, ... ; ; ¤ flag > correspond au type de popup-list entre une liste déroulante, une liste à choix unique ou multiple. ; ; (type flag) = 'INT | Ex. : 0 = Liste déroulante, 1 = Liste à choix unique, 2 = Liste à choix multiple ; ; ; ;--- Liste des fonctions dépendantes ; ; ¤ "UtDac" ---> str2lst | v1.0.0 - 15/04/2007 ((gile)) ; ; ¤ "BaLst" ---> vl-list-search | v1.0.0 - 13/12/2021 (Luna) ; ; ; ;--- Retour ; ; La fonction (ListBox) renvoie la valeur (flag = 0 ou 1) ou la liste des valeurs (flag = 2) choisie(s) par l'utilisateur ; ; Ex. : (ListBox "Présentation" "Choisir une présentation" (layoutlist) (getvar "CTAB") 1) ; ; ; ;--- Modifications apportées par rapport à la version précédente ; ; > Ajout d'une edit_box ajoutant la possibilité de filter la liste à partir d'une recherche (cf. (wcmatch) wildcard characters). ; ; Pour afficher la liste complète, il faut mettre un "*" dans la barre de recherche. Le nombre d'éléments affichés ainsi que le ; ; total d'éléments de la liste sont affichés sous la liste en guise d'information. Ajout d'une variable locale 'tlst pour ne pas ; ; perdre les données de la liste originelle tout en renvoyant les bons résultats en cas d'application d'un filtre. Ajout de la ; ; fonction (vl-list-search) dans le fonctionnement de la fonction (ListBox). ; ; ; (defun ListBox (title msg lst value flag / tmp file DCL_ID choice tlst) (setq tmp (vl-filename-mktemp "tmp.dcl") file (open tmp "w") tlst lst ) (write-line (strcat "ListBox:dialog{width=" (itoa (+ (apply 'max (mapcar 'strlen (mapcar 'vl-princ-to-string lst))) 5)) ";label=\"" title "\";") file ) (write-line ":edit_box{key=\"filter\";}" file ) (if (and msg (/= msg "")) (write-line (strcat ":text{label=\"" msg "\";}") file) ) (write-line (cond ((= 0 flag) "spacer;:popup_list{key=\"lst\";}") ((= 1 flag) "spacer;:list_box{height=15;key=\"lst\";}") (t "spacer;:list_box{height=15;key=\"lst\";multiple_select=true;}") ) file ) (write-line ":text{key=\"count\";}" file) (write-line "spacer;ok_cancel;}" file) (close file) (setq DCL_ID (load_dialog tmp)) (if (not (new_dialog "ListBox" DCL_ID)) (exit) ) (set_tile "filter" "*") (set_tile "count" (strcat (itoa (length lst)) " / " (itoa (length lst)))) (start_list "lst") (mapcar 'add_list lst) (end_list) (set_tile "lst" (if (member value lst) (itoa (vl-position value lst)) (itoa 0))) (action_tile "filter" "(start_list \"lst\") (mapcar 'add_list (setq tlst (vl-list-search $value lst))) (end_list) (set_tile \"count\" (strcat (itoa (length tlst)) \" / \" (itoa (length lst))))" ) (action_tile "accept" "(or (= (get_tile \"lst\") \"\") (if (= 2 flag) (progn (foreach n (str2lst (get_tile \"lst\") \" \") (setq choice (cons (nth (atoi n) tlst) choice)) ) (setq choice (reverse choice)) ) (setq choice (nth (atoi (get_tile \"lst\")) tlst)) ) ) (done_dialog)" ) (start_dialog) (unload_dialog DCL_ID) (vl-file-delete tmp) choice ) (defun str2lst (str sep / pos) (if (setq pos (vl-string-search sep str)) (cons (substr str 1 pos) (str2lst (substr str (+ (strlen sep) pos 1)) sep) ) (list str) ) ) (defun vl-list-search (p l) (vl-remove-if-not '(lambda (x) (wcmatch x p)) l ) ) Attention tout de même car la fonction originelle utilise une liste d'association '((key1 . label1) (key2 . label2) ...) et renvoie la clé (flag = 0 ou 1) ou la liste des clés (flag = 2) sélectionné(s). Ici la fonction utilise une liste d'atomes '(atom1 atom2 atom3 ...) et renvoie l'atome (flag = 0 ou 1) ou la liste des atomes (flag = 2) sélectionné(s). Donc l'argument concernant la liste change légèrement. Lors de ma version 2.0.0 j'ai également ajouté un argument 'value pour permettre de définir une valeur par défaut si besoin pour la liste (ex. : (getvar "CLAYER")). Je la poste car cela peut servir aussi bien dans un programme que comme exemple sur la mise à jour d'un élément d'une boîte de dialogue à partir d'une saisie utilisateur (permettant d'avoir une boîte de dialogue dynamique et adaptative). Et merci à @(gile) qui écrit toujours des fonctions épurées et générales dans leur utilisation ! Bisous, Luna 1
sylarr Posté(e) le 1 août 2022 Posté(e) le 1 août 2022 Salut @gile, incroyable ces lisps. Ils ont l'air hyper pratiques. J'aimerai bien tester mais quand je mets tous les lisps avec GetLayer en .lsp, rien ne se passe. J'imagine qu'ils ne sont plus à jour ? Si c'est le cas je comprends bien sûr 😅 A+ sylarr
(gile) Posté(e) le 1 août 2022 Auteur Posté(e) le 1 août 2022 il y a 49 minutes, sylarr a dit : quand je mets tous les lisps avec GetLayer en .lsp, rien ne se passe. Je ne comprends pas ce que tu veux dire. Peux-tu être plus explicite, s'il te plait ? Il n'y a aucune raison que ces LISPs ne soient pas "à jour" (qu'ils ne fonctionne pas sur les versions récentes d'AutoCAD), par contre, il existe peut-être des versions plus récentes de certains d'entre eux sur cette page. 1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
didier Posté(e) le 1 août 2022 Posté(e) le 1 août 2022 Bonjour @(gile) Je viens de répondre à ce membre sur le même genre de remarque et je n'ai pas voulu répondre deux fois pour la même question. Voir ICI Si j'ai été explicite, il devrait se servir de ce nouveau savoir pour charger tes programmes sans mettre en cause le programmeur. Amicalement 1 Éternel débutant... Mon site perso : Programmer dans AutoCAD
RomB Posté(e) le 28 novembre 2022 Posté(e) le 28 novembre 2022 Bonjour Gile, je désir utiliser le Lisp, plineorg mais cela ne semble pas fonction sur ma version autocad (2021). J'essayé de selectionné une polyligne avant ou sans, espace papier/objet, l'accrochage objet proche s'active et cela ne fait rien : Sélectionnez le nouveau point de départ sur la polyligne: Erreur: no function definition: SUBLIST As-tu une solution ? merci.
lecrabe Posté(e) le 28 novembre 2022 Posté(e) le 28 novembre 2022 Hello "Mon" PLINEORG fonctionne parfaitement sur AutoCAD MAP 2021 ! Voir le Lisp ci-dessous ... ACAD 2021-2023 : Mettre eventuellement LISPSYS = 1 ( NON necessaire a mon avis !? ) La Sante, Bye, lecrabe ;;; ;;; (gile) 04/03/2007 - Appel par PLINEORG - www.cadxp.com - (gile) ;;; http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=14098#pid55578 ;;; Modifier le point origine d'une polyligne 2D fermée ;;; en principe dans les propriété de la polyligne le sommet appelé numéro 1 est le premier clicquer lors de la création. ;;; Moi j'aimerai bien pouvoir en changer en en choisissant un autre ;;; ;;; Edit : Fonctionne désormais avec les polylignes créées dans des systèmes de coordonnées non parallèles au SCG. ;;; Edit 2 : Prise en compte de remarques et suggestions de Bonuscad. ;;; ;;; MEMBER-FUZZ Comme MEMBER avec une tolérance dans la comparaison (defun member-fuzz (expr lst fuzz) (while (and lst (not (equal (car lst) expr fuzz))) (setq lst (cdr lst)) ) ) ;;; TRUNC-FUZZ Retourne la liste tronquée à partir de la première occurrence ;;; de l'expression (liste complémentaire de celle retournée par MEMBER-FUZZ) (defun trunc-fuzz (expr lst fuzz) (if (and lst (not (equal (car lst) expr)) ) (cons (car lst) (trunc-fuzz expr (cdr lst) fuzz)) ) ) ;;; PlineOrg Change le point de départ de la polyligne fermée (defun c:plineorg (/ erreur os pt ent plst dlst elst) (defun erreur (msg) (if (= msg "Fonction annulée") (princ) (princ (strcat "\nErreur: " msg)) ) (setvar "OSMODE" os) (setq *error* m:err m:err nil ) ) (setq m:err *error* *error* erreur os (getvar "OSMODE")) (setvar "OSMODE" 1) (if (and (setq pt (getpoint "\nSélectionnez le nouveau point de départ sur la polyligne: " ) ) (setq ent (car (nentselp pt))) (setq elst (entget ent)) (= "LWPOLYLINE" (cdr (assoc 0 elst))) (= 1 (logand 1 (cdr (assoc 70 elst)))) (setq plst (vl-remove-if-not '(lambda (x) (member (car x) '(10 40 41 42)) ) elst ) ) (setq dlst (member-fuzz (setq pt (cons 10 (reverse (cdr (reverse (trans pt 1 ent) ) ) ) ) ) plst 1e-9 ) ) (setq elst (vl-remove-if '(lambda (x) (member (car x) '(10 40 41 42)) ) elst ) ) ) (entmod (append elst dlst (trunc-fuzz pt plst 1e-9))) (prompt "\nEntité non valide.") ) (setvar "OSMODE" os) (setq *error* m:err m:err nil ) (princ) ) Autodesk Expert Elite Team
DenisHen Posté(e) le 14 février 2023 Posté(e) le 14 février 2023 Bonjour à la communauté. J'ai un petit souci avec les listes, qui m'intéressent de plus en plus, mais je m'énerve dessus aussi... J'ai fais ça dans le console : _$ (setq Liste (list "Lundi" "Mardi" "Jeudi" "Mercredi" "Vendredi" "Samedi" "Dimanche")) ; C'est ma liste d'origine ("Lundi" "Mardi" "Jeudi" "Mercredi" "Vendredi" "Samedi" "Dimanche") ; Super fonction de (gile) qui sépare en deux une liste à un point donné (ici à 3) _$ (setq LstNew (gc:breakAt 3 Liste)) ; Je comprend le résultat, deux sous-listes dans une liste (("Lundi" "Mardi" "Jeudi") ("Mercredi" "Vendredi" "Samedi" "Dimanche")) _$ (car LstNew) ; Première sous-liste ("Lundi" "Mardi" "Jeudi") ; Ok, c'est une liste ; Deuxième sous-liste _$ (cdr LstNew) (("Mercredi" "Vendredi" "Samedi" "Dimanche")) ; Pourquoi c'est une liste dans une liste ? ? ? _$ Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Luna Posté(e) le 17 février 2023 Posté(e) le 17 février 2023 Coucou @DenisHen, L'exemple est simple. Prenons un point 2D, nommé pt : (list 0.0 1.0) Ici (car pt) renvoie 0.0 (donc un réel et non une liste). En revanche (cdr pt) renvoie (1.0) car (cdr) renvoie la liste moins la première valeur, donc une liste composée d'un seul élément. Si tu veux récupérer l'élément alors il faut faire (cadr pt) pour obtenir 1.0 🙂 Si désormais on prends pt2 : (cons 0.0 1.0) alors désormais on a une paire pointée dont le premier élément est la key et le second une value associée à la key. Ainsi donc, (car pt2) retourne 0.0 et (cdr pt2) retourne 1.0 En revanche si on prend une liste composée de liste, alors on est dans le premier cas. Autrement dit il te faut utiliser (car) pour récupérer la première liste, puis (cadr) pour récupérer la seconde liste. Si tu veux apprendre la différence, il te suffit de comprendre la différence entre (list) et (cons), puis de comprendre le fonctionnement si on combine les deux ensemble en faisant des (list) de (list) ou de (cons) et des (cons) de (cons) ou de (list). Cela peut paraître un peu étrange au début mais cela n'est pas si compliqué que cela au final (évidemment plus tu ajoutes des listes dans des listes et plus c'est compliqué mais vas-y étape par étape). Bisous, Luna
DenisHen Posté(e) le 17 février 2023 Posté(e) le 17 février 2023 Coucou @Luna et merci pour ton aide. Je n'avais pas saisi le (cdr. Et pourtant, je crois que je l'avais dans un coin du cerveau. Effectivement, c'est la liste à partir du deuxième élément et non le deuxième élément. Même s'il n'y a que deux élément dans le liste... Encore merci à toi. Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
azrael Posté(e) le 23 février 2023 Posté(e) le 23 février 2023 Bonjour, J'utilise le (trop super) lisp de Gile pour insérer un bloc dynamique avec une valeur d'attribut qui s'incrémente . Malheureusement, les blocs ne sont plus dynamique après l'insertion ? C'est normal ? TMP.dwg
(gile) Posté(e) le 23 février 2023 Auteur Posté(e) le 23 février 2023 Salut, Tu devrais plutôt utiliser le plug-in Increment qui plus puissant et plus robuste. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
PHILPHIL Posté(e) le 24 février 2023 Posté(e) le 24 février 2023 hello Gile pour ton plug in INCREMENT, tu ne devais pas rajouter pour "SELECTION" un bouton de selection de bloc comme dans "ATTRIBUT", ( plus facile pour choisir les bloc deja mis en place ) Merci Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
Dilack33 Posté(e) le 12 avril 2023 Posté(e) le 12 avril 2023 Bonjour Gille, un petit soucis avec le lips "Cadre & Masque" sur autocad 2023 les paramètres sont inaccessible avec le raccourcis "P"
(gile) Posté(e) le 12 avril 2023 Auteur Posté(e) le 12 avril 2023 @Dilack33 Il n'y a pas de raccourci. Pour atteindre les paramètres, il suffit de faire Entrée (ou clic droit) au lieu de sélectionner des objets. Comme avec les commandes natives, s'il s'agissait d'une option elle apparaitrait entre crochets dans la ligne de commande. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Dilack33 Posté(e) le 12 avril 2023 Posté(e) le 12 avril 2023 Autant pour moi Gille, j'ai pas eu le reflexe du clic droit 😅
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