Aller au contenu

DenisHen

Membres
  • Compteur de contenus

    4 029
  • Inscription

  • Dernière visite

  • Jours gagnés

    21

Tout ce qui a été posté par DenisHen

  1. Bonjour à tous. Voilà, aujourd'hui, je tente d'importer des calques grace à la routine de Lee Mac : Steal. J'ai ça qui fonctionne : (Steal "Carbone.dwg" '(("Layers" ("DET_FIB*")))) Mais si je veux importer des calques avec une variable, ça ne fonctionne plus : (setq ChargCalq "DET_FIB*") (Steal "Carbone.dwg" '(("Layers" (ChargCalq)))) AutoCAD me répond : Si quelqu'un peut m'aider, je suis preneur...
  2. Merci Patrick_35, je commence à piger le truc alors ? ;) Il était temps... :huh: Je cherche un exemple à faire pour bien capter le truc...
  3. Merci pour ton aide Patrick_35. Je n'ai rien sous le coude pour faire des testes, mais j'ai déjà ça dans un lisp : (vlax-ldata-put "DenisH" "FlPtLong" Long) (vlax-ldata-put "DenisH" "FlPtLarg" Larg) (vlax-ldata-put "DenisH" "FlPtEpais" Epais) Suis-je loin en faisant ça ? (setq LstPut "FlPtLong" "FlPtLarg" "PlPtEpais" LstVal Long Larg Epais) (mapcar '(lambda (LstPut LstVal) (vlax-ldata-put "Denis" LstPut LstVal))) Je cherche un exemple concret pour le tester mais je n'ai pas d'idée (si quelqu'un en a une pour m'exercer)...
  4. Salut Patrick_35, et merci pour ton aide... C'est expliqué dans le "Introduction_a_AutoLISP" de Maître (gile) mais je trouve ça trop "condensé" (pour moi). Je commence à mieux comprendre le truc, je tente avec (setq keys '("FlP1" "FlP2" "FlP3" "FlM1" "FlM2" "FlM3" "FlG1" "FlG2" "FlG3")) (mapcar '(lambda (key val) (set_tile key val)) keys data) Mais ce n'est pas si facile que ça... ;) Voici je que j'en comprend : lambda (key val) -> on déclare les deux variables set_tile key val -> je ne saisi pas trop keys data -> je ne saisi pas du tout Mais peut-être que mon exemple (Lisp + DCL) est trop complexe pour une première approche... Encore merci...
  5. Salut (gile), et merci pour cette réponse... Tu m'avais déjà parlé de séparer le dialogue et la routine mais je n'avais pas bien saisi. C'est chose faite... J'ai de quoi faire pour bien comprendre, mais déjà que mapcar et lambda me pose certains problèmes de compréhension, alors les deux en même temps, c'est pas sympa... ;) Je me suis permis d'étoffer la DCL (la ou le ?), ça donne ceci pour ceux à qui ça intéresse : //-------------- // DH_Fleches //-------------- DH_Fleches : dialog { key = "Titre"; : row { fixed_width = true; :column{ : text { label = "Taille de la ->"; width = 8; fixed_width = true; } : text { label = "Petite"; width = 8; } : text { label = "Moyenne"; width = 8; } : text { label = "Grande"; width = 8; fixed_width = true; } } :column{ : text { key = "Fl1"; label = "Pointe "; width = 5; fixed_width = true; } : edit_box { key = "FlP1"; edit_width = 5; fixed_width = true; } : edit_box { key = "FlM1"; edit_width = 5; fixed_width = true; } : edit_box { key = "FlG1"; edit_width = 5; fixed_width = true; } } :column{ : text { key = "Fl2"; label = "Base "; width = 5; fixed_width = true; } : edit_box { key = "FlP2"; edit_width = 5; fixed_width = true; } : edit_box { key = "FlM2"; edit_width = 5; fixed_width = true; } : edit_box { key = "FlG2"; edit_width = 5; fixed_width = true; } } :column{ : text { key = "Fl3"; label = "Queue"; width = 5; fixed_width = true; } : edit_box { key = "FlP3"; edit_width = 5; fixed_width = true; } : edit_box { key = "FlM3"; edit_width = 5; fixed_width = true; } : edit_box { key = "FlG3"; edit_width = 5; fixed_width = true; } } } spacer; ok_cancel; } Encore un grand merci pour ton aide... Denis...
  6. Salut Vincent, et merci pour ton aide. J'ai bien placé ta phrase avant le (start_dialog), mais AutoCAD me répond ceci à la fermeture de la fenêtre :
  7. Je pense que ces méthodes sont illégales...
  8. Je viens d'aller faire un tour chez Lee Mac, Draftsperson.net, Jeffery P Sanders, Ron Leigh, Pixel Graphics Inc., A'CAD Solutions, CAD Digest... Mais tout est en anglais et pas forcément très "limpide" pour le débutant que je suis...
  9. Pfff... En plus, l'aide est super light...
  10. Bonjour à tous. J'ai développé une suite de routines qui dessinent des flèches. il y a trois type de flèche, une petite, une moyenne et une grande (pour une utilisation à plusieurs échelles). J'ai fini par écrire un fichier DCL pour configurer le tout (longueur de la pointe, largeur de la pointe et largeur de la queue). Mais lorsque je lance mon Lisp et que la fenêtre s'affiche, je ne peut changer qu'une valeur et en plus, l'affiche ne transmet pas les informations changées dans la fenêtre vers le Lisp. Si quelqu'un as une idée, une astuce... Je suis preneur. Voici le LISP : ;;;****************************************** ;;; Configuration des tailles de flèches ;;;****************************************** (defun c:ConfigFleches (/ *DH_Fleches@ Dcl_Id% FlP1$ FlP2$ FlP3$ FlM1$ FlM2$ FlM3$ FlG1$ FlG2$ FlG3$) (princ "\nDéveloppé par Denis H. (v1.1)") (princ "\nDéfinir les valeurs en mm papier, leurs tailles seront selon l'échelle du dessin") (if (not *DH_Fleches@) (setq *DH_Fleches@ (list nil "" "" "" "" "" "" "" "" "")) ) ;_ Fin de if ;; Attribution des valeurs pour la DCL************** (setq FlP1$ (vlax-ldata-get "DenisH" "FlPtLong" "0.4") FlP2$ (vlax-ldata-get "DenisH" "FlPtLarg" "0.2") FlP3$ (vlax-ldata-get "DenisH" "FlPtEpais" "0.0") ) ;_ Fin de setq ;; (setq FlM1$ (vlax-ldata-get "DenisH" "FlMoLong" "0.8") FlM2$ (vlax-ldata-get "DenisH" "FlMoLarg" "0.4") FlM3$ (vlax-ldata-get "DenisH" "FlMoEpais" "0.0") ) ;_ Fin de setq ;; (setq FlG1$ (vlax-ldata-get "DenisH" "FlGrLong" "2") FlG2$ (vlax-ldata-get "DenisH" "FlGrLarg" "1") FlG3$ (vlax-ldata-get "DenisH" "FlGrEpais" "0.0") ) ;_ Fin de setq ;; Chargement de la fenêtre de dialog (setq Dcl_Id% (load_dialog "DH_Fleches.dcl")) (if (not (new_dialog "DH_Fleches" Dcl_Id%)) (exit) ) ;_ Fin de if ;; Initialise les valeurs*************************** (set_tile "Titre" " Configuration des flèches") ;; (set_tile "Txt1" "Petite :") (set_tile "Txt2" "Moyenne :") (set_tile "Txt3" "Grande :") ;; (set_tile "FlP1" FlP1$) (set_tile "FlP2" FlP2$) (set_tile "FlP3" FlP3$) ;; (set_tile "FlM1" FlM1$) (set_tile "FlM2" FlM2$) (set_tile "FlM3" FlM3$) ;; (set_tile "FlG1" FlG1$) (set_tile "FlG2" FlG2$) (set_tile "FlG3" FlG3$) ;; Actions****************************************** (action_tile "FlP1" "(check_editreal \"FlP1$\")") (action_tile "FlP2" "(check_editreal \"FlP2$\")") (action_tile "FlP3" "(check_editreal \"FlP3$\")") ;; (action_tile "FlM1" "(check_editreal \"FlM1$\")") (action_tile "FlM2" "(check_editreal \"FlM2$\")") (action_tile "FlM3" "(check_editreal \"FlM3$\")") ;; (action_tile "FlG1" "(check_editreal \"FlG1$\")") (action_tile "FlG2" "(check_editreal \"FlG2$\")") (action_tile "FlG3" "(check_editreal \"FlG3$\")") ;; Décharge la DCL********************************** (setq Return# (start_dialog)) (setq *DH_Fleches@ (list nil FlP1$ FlP2$ FlP3$ FlM1$ FlM2$ FlM3$ FlG1$ FlG2$ FlG3$)) (princ *DH_Fleches@) ;<<<--- C'est ici la preuve que le retour ne se fait pas ********* (unload_dialog Dcl_Id%) ;; Attribution des nouvelles valeurs************** (vlax-ldata-put "DenisH" "FlPtLong" (nth 1 *DH_Fleches@)) (vlax-ldata-put "DenisH" "FlPtLarg" (nth 2 *DH_Fleches@)) (vlax-ldata-put "DenisH" "FlPtEpais" (nth 3 *DH_Fleches@)) ;; (vlax-ldata-put "DenisH" "FlMoLong" (nth 4 *DH_Fleches@)) (vlax-ldata-put "DenisH" "FlMoLarg" (nth 5 *DH_Fleches@)) (vlax-ldata-put "DenisH" "FlMoEpais" (nth 6 *DH_Fleches@)) ;; (vlax-ldata-put "DenisH" "FlGrLong" (nth 7 *DH_Fleches@)) (vlax-ldata-put "DenisH" "FlGrLarg" (nth 8 *DH_Fleches@)) (vlax-ldata-put "DenisH" "FlGrEpais" (nth 9 *DH_Fleches@)) (princ) ) ;_ Fin de defun Et le fichier DCL : //-------------- // DH_Fleches //-------------- DH_Fleches : dialog { key = "Titre"; label = ""; spacer; : row { fixed_width = true; : row { width =7; fixed_width = true; spacer; : text { key = "Fl0"; label = "Taille de la -> "; width = 8; fixed_width = true; } : text { key = "Fl1"; label = "Flèche "; width = 5; fixed_width = true; } : text { key = "Fl2"; label = "Base "; width = 5; fixed_width = true; } : text { key = "Fl3"; label = "Queue"; width = 5; fixed_width = true; } } } : row { fixed_width = true; : row { width =10; fixed_width = true; spacer; : text { key = "Txt1"; label = ""; width = 15; fixed_width = true; } : edit_box { key = "FlP1"; edit_width = 5; fixed_width = true; } : edit_box { key = "FlP2"; edit_width = 5; fixed_width = true; } : edit_box { key = "FlP3"; edit_width = 5; fixed_width = true; } } } : row { fixed_width = true; : row { fixed_width = true; spacer; : text { key = "Txt2"; label = ""; width = 15; fixed_width = true; } : edit_box { key = "FlM1"; edit_width = 5; fixed_width = true; } : edit_box { key = "FlM2"; edit_width = 5; fixed_width = true; } : edit_box { key = "FlM3"; edit_width = 5; fixed_width = true; } } } : row { fixed_width = true; : row { fixed_width = true; spacer; : text { key = "Txt3"; label = ""; width = 15; fixed_width = true; } : edit_box { key = "FlG1"; edit_width = 5; fixed_width = true; } : edit_box { key = "FlG2"; edit_width = 5; fixed_width = true; } : edit_box { key = "FlG3"; edit_width = 5; fixed_width = true; } } } spacer; ok_only; }
  11. Salut à tous. +1 avec Steven. Bien que l'arborescence actuelle ne me dérange absolument pas...
  12. Ben quoi, c'est pas compliqué, tu prends l'infini et t'ajoutes 1... Ok, je sors... ;)
  13. Bonjour à tous... Je l'ai testé sur MAP 2014 et MAP 2017, ça fonctionne super et cet outils est tout simplement génial... Encore merci (gile)...
  14. Re. Du coup, voici un chronomètre pour ceux qui pourrait en avoir besoin : ;;;****************************** ;;; Chronomètre * ;;; Merci à (gile) de CadXP.com * ;;;****************************** ;;; Déclanche le chronomètre * (defun c:DebutChrono () (vlax-ldata-put "DenisH" "ComptTmpDeb" (getvar 'millisecs)) (princ "\tDébut du chronomètre...") (princ) ) ;_ Fin de defun ;;;****************************** ;;; Arrête le chronomètre * (defun c:FinChrono () (vlax-ldata-put "DenisH" "ComptTmpFin" (getvar 'millisecs)) (princ "\tFin du chronomètre...") (setq ComptTmp (- (vlax-ldata-get "DenisH" "ComptTmpFin") (vlax-ldata-get "DenisH" "ComptTmpDeb"))) (prompt (strcat "\tTemps écoulé : " (itoa (setq h (/ ComptTmp 3600000))) "h " (itoa (setq m (/ (setq r (- ComptTmp (* h 3600000))) 60000))) "m " (rtos (/ (- r (* m 60000)) 1000.) 2 3) "s" ) ;_ Fin de strcat ) ;_ Fin de prompt (princ) ) ;_ Fin de defun Il se déclanche avec DebutChrono et s'arrête avec FinChrono depuis AutoCAD ou un autre Lisp, puis donne le résultat...
  15. Oui, je viens de le voir... Désolé de t'avoir fais perdre du temps...
  16. Au temps pour moi... J'avais ça : (setq ComptTmpFin (- (getvar 'millisecs) ComptTmpDeb) ; Fin du chronomètre ComptTmp (- ComptTmpFin ComptTmpDeb) ) ;_ Fin de setq au lieu de ça : (setq ComptTmpFin (getvar 'millisecs) ComptTmp (- ComptTmpFin ComptTmpDeb) ) ;_ Fin de setq MILLE EXCUSES ! ! !
  17. Salut (gile), et merci pour cette réponse... Mais je doute du résultat. Je l'ai chronométré à presque 9 secondes, Voici mon code (issu du tien) : (setq ComptTmpDeb (getvar 'millisecs));Début du chronomètre ... ... (setq ComptTmpFin (- (getvar 'millisecs) ComptTmpDeb) ; Fin du chronomètre ComptTmp (- ComptTmpFin ComptTmpDeb) ) ;_ Fin de setq (prompt (strcat "\nTemps écoulé : " (itoa (setq h (/ ComptTmp 3600000))) "h " (itoa (setq m (/ (setq r (- ComptTmp (* h 3600000))) 60000))) "m " (rtos (/ (- r (* m 60000)) 1000.) 2 3) "s" ) ;_ Fin de strcat ) ;_ Fin de prompt (prompt (strcat "\nSoit : " (itoa ComptTmp) " millisecondes")) (prompt (strcat "\nSoit aussi : " (rtos (/ ComptTmp 1000.) 2 3) " secondes")) Et j'ai ces résultats : J'ai cherché ou était le problème, mais je ne trouve rien... J'espère ne pas avoir fais de bourde en copiant ton code...
  18. Salut Patrick_35, et merci pour cette réponse. En fait, je ne cherche pas à comparer, mais bien à chronométrer... Dans ma routine, il y a deux questions posées à l'utilisateur, temps qui ne rentre pas en compte dans le calcul, et ensuite, le "vrai" code commence, c'est ce temps là que j'aimerai connaitre. Je n'arrive qu'à avoir un résultat en secondes... j'aurais aimé en heure, minute, seconde... avec : (setq Result (strcat "Temps écoulé : " (rtos (- ComptTmpFin ComptTmpDeb) 2 2) " secondes.")) Dommage, ce sera pour plus-tard...
  19. Re. Je suis en train de pester avec ça : (setq n-datetravail (strcat "\nTemps écoulé : " (menucmd "M=$(edtime,ComptTmp,HH MM SS)")))
  20. Je n'arrive pas comprendre ces données, j'ai remplacé cette phrase par (setq n-datetravail (strcat "\nTemps écoulé : "heuret "h " minutet "mn " secondet ":" seconde10t "s.")) qui me donne Alors que mon code a duré environ 15 secondes... ?
  21. Salut Phil, et merci pour ces codes... Bien que trop complets pour mes besoins... Bien qu'en le bidouillant un peu, il devrait faire l'affaire... J'ai dégoté un bout de code sur la toile et j'ai tenté de l'adapter : (setq ComptTmpDeb (getvar "TDINDWG") ;en début de code ... ... ... (setq ComptTmpFin (getvar "TDINDWG") ; en fin de code ComptTmp (- ComptTmpFin ComptTmpDeb) ) ;_ Fin de setq (setq ComptTmpSec (strcat (rtos (* 86400 ComptTmp) 2 2) "s.") ComptTmpMin (strcat (rtos (/ (* 86400 ComptTmp) 60) 2 2) "mn ") ComptTmpHeu (strcat (rtos (/ (* 86400 ComptTmp) 3600) 2 2) "h ") ) ;_ Fin de setq (princ (strcat ComptTmpHeu ComptTmpMin ComptTmpSec)) Seul problème, le résultat est : "0.00h 0.23mn 14.00s." Je ne comprend pas les "0.23mn", mon code n'a pas duré plus de 10 secondes... Quelqu'un aurait une idée ? Une astuce ?... Je suis preneur...
  22. Bonjour à tous. Je cherche à savoir le temps d'exécution d'une routine (et je ne dois pas être le seul...). J'ai trouvé la variable qui chronomètre le temps passé sur un dwg (pourquoi utiliser celle-là plustôt qu'une autre ???). J'ai donc placé un (setq ComptTmpDeb (getvar "TDINDWG")) en début de code et un (setq ComptTmpFin (getvar "TDINDWG")) à la fin. Mais comment exprimer le résultat de ComptTmpFin - ComptTmpDeb en heure, minute et seconde dans un (alert par exemple ? si quelqu'un as une astuce, un conseil... je suis preneur...
  23. Bonjour à vous, et merci messieurs pour votre aide... En fait, dans ma routine, j'insérais les 8500 blocs, puis attribuais les 11 valeurs aux 8500 blocs et ensuite, écrivais les coordonnées des blocs dans un fichier .csv. Trois boucles... Mais grace à la réponse de (gile) sur un autre post, je fais tout en une seule fois, et ça ne prend que quelques minutes... EN une boucle... Encore merci à vous deux qui, tel des Zorro du LiSP, venez à notre secours... ;) Denis...
  24. Salut (gile). C'est nickel... j'avais pourtant cherché... ;) Encore merci...
  25. Salut (gile), merci pour le partage...
×
×
  • 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é