-
Compteur de contenus
4 029 -
Inscription
-
Dernière visite
-
Jours gagnés
21
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par DenisHen
-
Je comprend, mais je dois avoir 2 ou 3 lisp patagés, je ne pense pas que ce soit nécessaire de créer un post juste pour ça. Et je laisse cet honneur aux grands du site... Perso, je ne sais même pas si mes lisp seront utilisés par d'autres... Mais je prend ça pour un compliment... ;)
-
J'ai corrigé un petit "bug"... Les X et Y du tableau étaient inversés... Désolé... C'est la trac des soirs de premières...
-
Bonjour à tous. Voilà, pour mes besoins, j'ai créé un lisp (avec une DCL) qui dessine des flèches en une polyligne en 2 clics. J'ai différencié 3 types de flèche : petite, moyenne et grande. Toutes les trois paramétrables, soit au moment du dessin, soit dans une fenêtre dédiée. Voici mon programme : DH_Fleches.zip Les différentes tailles (celle de la flèche, de la base et de la queue) sont exprimées en mm papier. Les commandes sont : - ConfigFleches : fenêtre de configuration des flèches, - DHPetiteFleche : dessine une petite flèche selon l'échelle, - DHMoyenneFleche : dessine une flèche moyenne selon l'échelle, - DHGrandeFleche : dessine une grande flèche selon l'échelle, Un grand merci à CadXP (notamment à Patrick_35, (gile), VDH-Bruno et j'en oubli...) sans qui, jamais je n'aurais réussi à faire cette routine... En espérant être utile à quelqu'un... Denis...
-
[Résolu] Petit problème entre un Lisp et sa DCL
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Encore une fois (gile), ton aide est précieuse et judicieuse... Je vais poster lom lsp et mon dcl dans "Routines Lisp" pour en faire profiter d'autres... Encore merci à toi... -
[Résolu] Petit problème entre un Lisp et sa DCL
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Salut (gile) et merci pour ta réponse... Effectivement, c'était "DH_Fleches.dcl" et non "DH_Fleche.dcl"... Il y avait un "s" à Fleche... GRRRR Maintenant, j'ai un autre soucis, mais je vais chercher à le résoudre avant de revenir... Ça ne doit pas être bien compliqué "Impossible de trouver une définition pour la boite de dialogue DH_Fleches"... Mais ça ne me dit pas si l'erreur vient de ma DCL ou de mon Lisp... Encore merci... -
[Résolu] Petit problème entre un Lisp et sa DCL
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Ben alors, il n'y a personne pour me filer un coup de patte ? J'ai installer OpenDCL, mais son utilisation dans un Lisp reste une énigme pour moi, car la seule aide que j'ai trouvée est en anglais... Denis... -
Bonjour à tous. Voilà, je cherche à faire un lisp relié à une DCL. Les voici : DH_Fleches.zip. Car les deux fichiers comportent trop de lignes pour les détaillés ici. Mon problème est qu'au lancement de la commande "ConfigFleches", rien ne s'affiche et hop. C'est terminé... Mon contrôle dans la Console donne : En fait, j'essai de faire une fenêtre comme celle-là : (créé avec OpenDCL). Si quelqu'un a un conseil ou une astuce... Je suis preneur... Denis... [EDIT] Je me demande si ce ne serait pas plus simple en VBA, mais ce serait c**illon d’abandonner mes Lisp...
-
Salut. Je sais que c'est un peu tard, mais si d'autres font la même recherche... J'ai trouvé beaucoup d'aide ICI... Denis...
-
[Résolu] Petit lisp qui fait correspondre une liste de calques
DenisHen a répondu à un(e) sujet de DenisHen dans Routines LISP
Salut. Mille mercis Patrick_35, j'ai eu du mal à trouver mais c'est bon, ça fonctionne impeccablement maintenant... Tu avais raison, maintenant que je tripatouille aux DCL, j'en met un peu "partout". C'est vrai que c'est beaucoup plus convivial avec que sans... Merci encore à vous tous... -
[Résolu] Petit lisp qui fait correspondre une liste de calques
DenisHen a répondu à un(e) sujet de DenisHen dans Routines LISP
Pfff... En testant mon code, je m'aperçois que Edit1$ ne peut pas être négatif car il est controlé par un check_editreal qui doit refuser le caractère "-" (moins)... Quelqu'un aurait une astuce ou une solution ? -
[Résolu] Petit lisp qui fait correspondre une liste de calques
DenisHen a répondu à un(e) sujet de DenisHen dans Routines LISP
Merci (gile) pour cette précision... C'est vrai que ce n'est qu'une méthode et pas une "norme"... -
[Résolu] Petit lisp qui fait correspondre une liste de calques
DenisHen a répondu à un(e) sujet de DenisHen dans Routines LISP
Bonjour (gile) et merci pour ton aide... Effectivement, variable$ ne peut être qu'un string, en plus, je suis un peu c**, on fait de même en VBA... Par contre, je ne savais pas pour le @. J'opte donc pour que cette variable soit toujours un string et je la convertirais lors des calculs... Encore merci à vous... -
[Résolu] Petit lisp qui fait correspondre une liste de calques
DenisHen a répondu à un(e) sujet de DenisHen dans Routines LISP
Bonjour Patrick_35. Juste une petite question : si check_editreal vérifie que le valeur saisie est bien un réel, que renvoi Texte1$, un string ou un réel ? Je pense que le mieux serait que cette variable soit toujours un string, sauf lors des calculs. -
[Résolu] Petit lisp qui fait correspondre une liste de calques
DenisHen a répondu à un(e) sujet de DenisHen dans Routines LISP
Ben alors à quoi sert le check_editreal ? Je ne comprend pas... Ce n'est pas pour contrôler la saisi ? Car il faut que ça reste un réel... -
[Résolu] Petit lisp qui fait correspondre une liste de calques
DenisHen a répondu à un(e) sujet de DenisHen dans Routines LISP
Merci Patrick_35 pour ton aide, encore une fois... ;) J'ai corrigé mon Lisp, maintenant, (vlax-ldata-... "DenisH" "EtiqPTRL_Cste" sera toujour un réel. Quant à ta deuxième remarque, je ne saisi pas, Edit1$ est un string dans la DCL ? J'ai pourtant un ...check_editreal.... -
[Résolu] Petit lisp qui fait correspondre une liste de calques
DenisHen a répondu à un(e) sujet de DenisHen dans Routines LISP
Bon, j'ai refais un lisp qui n'utilisait que la ligne de commande AutoCAD par un autre qui utilise une DCL, voici mon Lisp : (defun c:ConfigPTRL (/ *ConfigPTRL@ Dcl_Id% Toggle1$ Toggle2$ Toggle3$ Toggle4$ Toggle5$ Toggle6$ Edit1$) (princ "\nDéveloppé par Denis H.") (if (not *ConfigPTRL@) ;Unique global variable name to store dialog info (setq *ConfigPTRL@ (list nil "" "" "")) ) ;_ Fin de if (if (= (vlax-ldata-get "DenisH" "EtiqPTRL_PTRL") "Oui") (setq Toggle1$ "1") (setq Toggle1$ "0") ) ;_ Fin de if (if (= (vlax-ldata-get "DenisH" "EtiqPTRL_Prof") "Oui") (setq Toggle2$ "1") (setq Toggle2$ "0") ) ;_ Fin de if (if (= (vlax-ldata-get "DenisH" "EtiqPTRL_Zgs") "Oui") (setq Toggle3$ "1") (setq Toggle3$ "0") ) ;_ Fin de if (if (= (vlax-ldata-get "DenisH" "EtiqPTRL_Efface") "Oui") (setq Toggle4$ "1") (setq Toggle4$ "0") ) ;_ Fin de if (if (= (vlax-ldata-get "DenisH" "EtiqPTRL_Calcul") "Oui") (setq Toggle5$ "1") (setq Toggle5$ "0") ) ;_ Fin de if (if (= (vlax-ldata-get "DenisH" "EtiqPTRL_Cste") nil) (setq Edit1$ "0") (setq Edit1$ (vlax-ldata-get "DenisH" "EtiqPTRL_Cste")) ) ;_ Fin de if (if (= (vlax-ldata-get "DenisH" "EtiqPTRL_Zr") "Oui") (setq Toggle6$ "1") (setq Toggle6$ "0") ) ;_ Fin de if (setq Dcl_Id% (load_dialog "ConfigPTRL.dcl")) (new_dialog "ConfigPTRL" Dcl_Id%) ;;; (set_tile "Title" " Configuration des PTRL") (set_tile "Toggle1" Toggle1$) (set_tile "Toggle2" Toggle2$) (set_tile "Toggle3" Toggle3$) (set_tile "Toggle4" Toggle4$) (set_tile "Toggle5" Toggle5$) (set_tile "Toggle6" Toggle6$) (set_tile "Edit1" Edit1$) ; Dialog Actions (action_tile "Toggle1" "(setq Toggle1$ $value)") (action_tile "Toggle2" "(setq Toggle2$ $value)") (action_tile "Toggle3" "(setq Toggle3$ $value)") (action_tile "Toggle4" "(setq Toggle4$ $value)") (action_tile "Toggle5" "(setq Toggle5$ $value)") (action_tile "Toggle6" "(setq Toggle6$ $value)") (action_tile "Edit1" "(check_editreal \"Edit1$\")") (setq Return# (start_dialog)) (setq *ConfigPTRL@ (list nil Toggle1$ Toggle2$ Toggle3$ Toggle4$ Toggle5$ Toggle6$ Edit1$)) (unload_dialog Dcl_Id%) (if (= (nth 1 *ConfigPTRL@) "0") (vlax-ldata-put "DenisH" "EtiqPTRL_PTRL" "Non") (vlax-ldata-put "DenisH" "EtiqPTRL_PTRL" "Oui") ) ;_ Fin de if (if (= (nth 2 *ConfigPTRL@) "0") (vlax-ldata-put "DenisH" "EtiqPTRL_Prof" "Non") (vlax-ldata-put "DenisH" "EtiqPTRL_Prof" "Oui") ) ;_ Fin de if (if (= (nth 3 *ConfigPTRL@) "0") (vlax-ldata-put "DenisH" "EtiqPTRL_Zgs" "Non") (vlax-ldata-put "DenisH" "EtiqPTRL_Zgs" "Oui") ) ;_ Fin de if (if (= (nth 4 *ConfigPTRL@) "0") (vlax-ldata-put "DenisH" "EtiqPTRL_Efface" "Non") (vlax-ldata-put "DenisH" "EtiqPTRL_Efface" "Oui") ) ;_ Fin de if (if (= (nth 5 *ConfigPTRL@) "0") (vlax-ldata-put "DenisH" "EtiqPTRL_Calcul" "Non") (vlax-ldata-put "DenisH" "EtiqPTRL_Calcul" "Oui") ) ;_ Fin de if (if (= (nth 6 *ConfigPTRL@) "0") (vlax-ldata-put "DenisH" "EtiqPTRL_Zr" "Non") (vlax-ldata-put "DenisH" "EtiqPTRL_Zr" "Oui") ) ;_ Fin de if (vlax-ldata-put "DenisH" "EtiqPTRL_Cste" (atof (nth 7 *ConfigPTRL@))) ;; Affichage (alert (strcat "Configuration actuelle : \n\tBloc PTRL \t= " (vlax-ldata-get "DenisH" "EtiqPTRL_PTRL") "\n\tTexte Zgs \t\t= " (vlax-ldata-get "DenisH" "EtiqPTRL_Zgs") "\n\tTexte Profondeur \t= " (vlax-ldata-get "DenisH" "EtiqPTRL_Prof") "\n\tConstante ajoutée \t= " (rtos (vlax-ldata-get "DenisH" "EtiqPTRL_Prof_Cste") 2 2) "\n\tTexte Z réseau \t= " (vlax-ldata-get "DenisH" "EtiqPTRL_Zr") "\n\tCalcule du Zgs \t=" (vlax-ldata-get "DenisH" "EtiqPTRL_Calcul") ) ;_ Fin de strcat ) ;_ Fin de alert (princ) ) ;_ Fin de defun Et mon DCL : ConfigPTRL : dialog { key = "Title"; label = ""; spacer; : boxed_column { label = "Choix :"; width = 30; fixed_width = true; : toggle { key = "Toggle1"; label = "Placer des PTRL"; } : toggle { key = "Toggle2"; label = "Placer les profondeurs"; } : toggle { key = "Toggle3"; label = "Placer les Zgs"; } : toggle { key = "Toggle4"; label = "Effacer les anciens textes"; } : toggle { key = "Toggle5"; label = "Calcul du Zgs"; } : toggle { key = "Toggle6"; label = "Placer Zréseau"; } spacer; } : row { fixed_width = true; : column { width = 18; fixed_width = true; spacer; : text { key = "Text1"; label = "Constante à ajouter au Z :"; } } : edit_box { key = "Edit1"; edit_width = 6.42; fixed_width = true; } } spacer; ok_only; } Mon code affiche bien ma DCL mais stop après... Je n'arrive pas à savoir pourquoi... Biensur, j'utilise MyDialog comme l'a si bien remarqué (gile). Si quelqu'un a une astuce, un conseil ou une idée, je suis preneur... -
[Résolu] Petit lisp qui fait correspondre une liste de calques
DenisHen a répondu à un(e) sujet de DenisHen dans Routines LISP
Salut, J'avais essayé il y a longtemps OpenDCL... Résultat : rien pigé ! ! ! J'ai juste repéré qu'il y a trois façons de faire une DCL : 1. directement dans le Lisp, 2. en créant un fichier DCL (qui revient un peu au 1), 3. avec OpenDCL : vachement plus complexe, à mes yeux... En plus, ça fait des .odcl et je ne sais pas quoi faire avec... Je vais revoir tout ça, car tu as raison, ça ouvre beaucoup de possibilités et surtout, une interface entre le Lisp et l'utilisateur... Bon, j'ai un peu de temps, j'y retourne, j'ai une petite routine de "configuration" que j'aimerais faire avec une DCL... Merci encore pour ton aide... -
Hotfix 3 (et 2 et 1) pour les versions 2017
DenisHen a répondu à un(e) sujet de lecrabe dans AutoCAD 2017
Effectivement, mais je serais présent lors de l'installation... Notamment pour les Express Tools. Je ne me ferais pas avoir deux fois... ;) Merci pour ces précisions... -
Hotfix 3 (et 2 et 1) pour les versions 2017
DenisHen a répondu à un(e) sujet de lecrabe dans AutoCAD 2017
Salut à tous. Merci Steven pour ces informations... Je ne sais pas quelle version d'AutoCAD 2017 a été téléchargée par notre administrateur informatique... Il me semble qu'il l'a déjà et, donc, sans les HotFix... Il attend que la compta lui donne le feu vert pour l'installation... Merci encore... -
[Résolu] Petit lisp qui fait correspondre une liste de calques
DenisHen a répondu à un(e) sujet de DenisHen dans Routines LISP
Effectivement, c'est un de mes gros défauts... Parmi tant d'autres... ;) Merci (gile)... -
[Résolu] Personnalisation de SOMPOLY de (gile)
DenisHen a répondu à un(e) sujet de DenisHen dans Pour aller plus loin en LISP
Pour en revenir à la personnalisation de SomPoly de (gile), j'ai ajouter à cette commande une sélection multiple de calques... Voici mon code : (defun c:DHSomPoly ( / List1@ Value1$ Som LstCalq calque Dist) (princ "\nSomme des Polylignes par calques") (if (not *DHSomPolye@) ;Unique global variable name to store dialog info (setq *DHSomPoly@ (list nil "" "")) ) ;_ Fin de if (setq Value1$ nil List1@ nil Som 0 ) ;_ Fin de setq (while (setq lay (tblnext "LAYER" (not lay))) (if (not (wcmatch (cdr (assoc 2 lay)) "*|*")) (setq List1@ (cons (cdr (assoc 2 lay)) List1@)) ) ;_ Fin de if ) ;_ Fin de while (setq List1@ (vl-sort List1@ '<)) (setq Dcl_Id% (load_dialog "SelectCalque.dcl")) (new_dialog "SelectCalque" Dcl_Id%) ; Set Dialog Initial Settings (set_tile "Title" "Sélection de calques") (set_tile_list "List1" List1@ Value1$) ;*Included ;; Dialog Actions (action_tile "List1" "(set_multilist_value \"List1@\" \"Value1$\")") ;;*Included (setq Return# (start_dialog)) ;; Unload Dialog (unload_dialog Dcl_Id%) (setq LstCalq Value1$) (foreach calque LstCalq (setq Dist (polyLengthByLayer calque)) (princ (strcat "\nLe calque '" calque "' contient " (rtos Dist 2 1) "m") ;_ Fin de strcat ) ;_ Fin de if (setq Som (+ Som Dist)) ) ;_ Fin de foreach (princ (strcat "\nPour un total de : " (rtos Som 2 1) "m")) (princ) ) ;_ Fin de defun ;;; ;;; (defun polyLengthByLayer (layer / len ss) (vl-load-com) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))) ) ;_ Fin de or (setq len 0) (if (ssget "_X" (list '(0 . "lwpolyline") (cons 8 layer) (cons 410 "Model")) ) ;_ Fin de ssget (progn (vlax-for pl (setq ss (vla-get-ActiveSelectionSet *acdoc*)) (setq len (+ len (vla-get-Length pl))) ) ;_ Fin de vlax-for (vla-Delete ss) ) ;_ Fin de progn ) ;_ Fin de if len ) ;_ Fin de defun ;;; (defun set_tile_list (KeyName$ ListName@ Selected / Item) (start_list KeyName$ 3) (mapcar 'add_list ListName@) (end_list) (foreach Item (if (listp Selected) Selected (list Selected) ) ;_ Fin de if (if (member Item ListName@) (set_tile KeyName$ (itoa (- (length ListName@) (length (member Item ListName@))))) ) ;if ) ;foreach ) ;defun set_tile_list ;;; (defun set_list_value (SentList$ SentVar$ / SaveVar$ SubList@) (setq SubList@ (eval (read SentList$))) (setq SaveVar$ (eval (read SentVar$))) (set (read SentVar$) (nth (atoi $value) SubList@)) (if (= (eval (read SentVar$)) "") (progn (set (read SentVar$) SaveVar$) (set_tile_list $key SubList@ SaveVar$)) ;progn ) ;if (princ) ) ;defun set_list_value ;;; (defun set_multilist_value (SentList$ SentVar$ / SubList@) (setq SubList@ (eval (read SentList$))) (set (read SentVar$) (list (nth (atoi $value) SubList@))) (setq $value (substr $value (+ (strlen (itoa (atoi $value))) 2))) (while (/= $value "") (set (read SentVar$) (append (eval (read SentVar$)) (list (nth (atoi $value) SubList@))) );set (setq $value (substr $value (+ (strlen (itoa (atoi $value))) 2))) );while );defun set_multilist_value Voici le code de SelectCalque.dcl : //------------- // SelectCalque //------------- SelectCalque : dialog { key = "Title"; label = ""; : boxed_column { label = "Sélection multiple"; : list_box { multiple_select = true; key = "List1";//Value1$ from lsp file height = 40; fixed_height = true; width = 50; fixed_width = true; } spacer; } spacer; ok_only ;}//SelectCalqueLa commande : DHSomPoly... Merci à CadXP pour m'avoir permis de faire cette petite personnalisation... -
[Résolu] Petit lisp qui fait correspondre une liste de calques
DenisHen a répondu à un(e) sujet de DenisHen dans Routines LISP
Petit problème... Lorsque je lance plusieurs fois ma commande, l'ancienne liste existe encore, j'ai donc les calques en double, triple... Comment "vider" la fenêtre contenant la liste des calques avant de la remplir à nouveau ? Edit : En vidant List1@ avant... -
[Résolu] Petit lisp qui fait correspondre une liste de calques
DenisHen a répondu à un(e) sujet de DenisHen dans Routines LISP
Par contre, à la sortie du DCL, le contenu de Value1$ est égale à la première sélection dans la fenêtre, et non la liste des calques sélectionnés... EDIT : il fallait un "set_multilist_value" à la sortie du DCL... -
[Résolu] Petit lisp qui fait correspondre une liste de calques
DenisHen a répondu à un(e) sujet de DenisHen dans Routines LISP
Salut (gile)... Eh ben voilà, ma fenêtre se rempli... Mais dès que je sélectionne un calque, ça plante... EDIT : même problème qu'avec set_tile_list... C'est corrigé... -
[Résolu] Petit lisp qui fait correspondre une liste de calques
DenisHen a répondu à un(e) sujet de DenisHen dans Routines LISP
D'autre part, le lisp en lien "MyMultiLists" ne fonctionne pas chez moi...
