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, et merci pour vos réponses... J'ai contacté Maître (gile)...
  2. Bonjour à tous... J'ai fais comprendre à ma direction qu'il serait judicieux que je reçoive une formation pour le Lisp (développer mes applications) et/ou AutoCAD MAP (3D, SIG...). Je ferais part de vos réponses à mon supérieur qui m'a demandé des renseignements sur d'éventuelles formations. Je travaille à TROYES, sachant que nous ne possédons pas de salle dans laquelle peut se dérouler cette formation. Mais je dois pouvoir me déplacer... Si certains ont des conseils... Je suis preneur. Denis...
  3. Au temps pour moi...
  4. Aussi, mais il me semble que c'est que sous MAP.
  5. Salut. Le programme de Maître (gile) est ton ami... N'hésite pas si tu as besoin d'aide...
  6. Bonjour à tous... Il y a aussi, dans Paris, le lycée DORIAN, avenue Phillippe Auguste. Les profs étaient, à mon époque, des géomètre, et certain DPLG.
  7. TWINGO... C'est exactement ça, tout est en double dans le bloc... GRRRR..... J'aurais dû le faire moi-même... Merci encore pour ton aide, ça fonctionne nickel...
  8. Salut (gile), c'est effectivement une abérration, je vais vérifier...
  9. Bonjour à tous. Et encore merci à Maître (gile) pour toutes ses commandes qui nous sauvent la vie... Mais voilà, aujourd'hui, j'en ai une qui plante... Lorsque je lance la commande EATT et que je sélectionne un ou les 225 blocs (sous AutoCAD 2014 MAP et 2017 MAP), j'ai un message d'erreur. Rien ne se passe après ce message, le XLS n'est pas créé... Si quelqu'un a une astuce, un conseil... Je suis preneur...
  10. DenisHen

    script unité

    Salut à tous... Persi, j'ai, dans un bouton, cette ligne là qui me permet de passer en mètre, grades, nord en haut (zénith) et sens horaire, le tous avec deux décimales. La voici : ^C^C-unites;2;2;3;2;0,0;@0,1;O; Par contre, je ne m'explique pas pourquoi ça ne fonctionne pas chez fauxsuisse... Et je rejoins Maître (gile), évidemment... Seule INSUNITS est vraiment "importante", -UNITES ne gère en fait que l'"affichage"...
  11. Salut David. De rien, content d'avoir aidé... Denis...
  12. Salut à tous... J'ai modifié mes deux codes pour qu'ils enregistrent si le calque est ACtif ou INactif et s'il est Gelé ou Libéré... Avec toujour les deux lignes de commandes : Pour sauvegarder l'état des calques : ^C^C(c:SauveEtatCalq "NomDeLétat"); qu'on récupèrera avec : ^C^C(c:RecupEtatCalq "NomDeLétat"); Et voici le code : ;;;************************************************* ;;; Récupération des états de calque dans le dessin ;;;************************************************* (defun c:RecupEtatCalq (NomEtat / Doc ListCalq lay CalqCour) (princ "\nDéveloppé par Denis H.") (setq Doc (vla-get-activedocument (vlax-get-acad-object))) (setq ListCalq (vlax-ldata-get "DenisH" (strcat "ListCalq_" NomEtat))) (setq CalqCour (vlax-ldata-get "DenisH" (strcat "ListCalq_" NomEtat "_CalqCour"))) (command-s "-calque" "l" CalqCour "AC" CalqCour "") (setvar "clayer" CalqCour) (while (/= (car ListCalq) nil) (if (and (< (caddr ListCalq) 0) (/= (car ListCalq) CalqCour)) (command-s "-calque" "In" (car ListCalq) "") (command-s "-calque" "Ac" (car ListCalq) "") ) ;_ Fin de if (if (and (= (cadr ListCalq) 1) (/= (car ListCalq) CalqCour)) (command-s "-calque" "G" (car ListCalq) "") (command-s "-calque" "L" (car ListCalq) "") ) ;_ Fin de if (setq ListCalq (cdddr ListCalq)) ) ;_ Fin de while (vla-endundomark Doc) (princ) ) ;_ Fin de defun ;;;*********************************************** ;;; Sauvegarde des états de calque dans le dessin ;;;*********************************************** (defun c:SauveEtatCalq (NomEtat / Doc ListCalq lay CalqCour) (princ "\nDéveloppé par Denis H.") (setq Doc (vla-get-activedocument (vlax-get-acad-object))) (setq CalqCour (strcat "ListCalq_" NomEtat "_CalqCour")) (setq NomEtat (strcat "ListCalq_" NomEtat)) (while (setq lay (tblnext "LAYER" (not lay))) (if (and (not (wcmatch (cdr (assoc 2 lay)) "*|*"))) ;_ Fin de and (progn (setq ListCalq (cons (cdr (assoc 62 (tblsearch "layer" (cdr (assoc 2 lay))))) ListCalq)) (setq ListCalq (cons (cdr (assoc 70 (tblsearch "layer" (cdr (assoc 2 lay))))) ListCalq)) (setq ListCalq (cons (cdr (assoc 2 lay)) ListCalq)) ) ;_ Fin de progn ) ;_ Fin de if ) ;_ Fin de while (vlax-ldata-put "DenisH" NomEtat ListCalq) (vlax-ldata-put "DenisH" CalqCour (getvar "clayer")) (vla-endundomark Doc) (princ) ) ;_ Fin de defun Si ça peut servir à quelqu'un... Denis...
  13. Salut David. De rien, content d'avoir aidé... Pour débuter en LISP, il y a l'excellent "Introduction à AutoLisp" de Maître (gile). N'oublis pas le petit [Résolu] dans ton premier message... Denis...
  14. Salut. Voilà, j'ai refais mon code pour que soit sauvegardé l'ensemble des calques et leur statu Gelé/Libéré. On peut maintenant en sauvegarder plusieurs avec cette syntaxe à coller dans un bouton (ne pas oublier le point-virgule en fin de phrase) : ^C^C(c:SauveEtatCalq "NomDeLétat"); qu'on récupèrera avec : ^C^C(c:RecupEtatCalq "NomDeLétat");Et voici le code : ;;;*********************************************** ;;; Sauvegarde des états de calque dans le dessin ;;;*********************************************** (defun c:SauveEtatCalq (NomEtat / Doc ListCalq lay CalqCour) (princ "\nDéveloppé par Denis H.") (setq Doc (vla-get-activedocument (vlax-get-acad-object))) (setq CalqCour (strcat "ListCalq_" NomEtat "_CalqCour")) (setq NomEtat (strcat "ListCalq_" NomEtat)) (while (setq lay (tblnext "LAYER" (not lay))) (if (and (not (wcmatch (cdr (assoc 2 lay)) "*|*"))) ;_ Fin de and (progn (setq ListCalq (cons (cdr (assoc 70 (tblsearch "layer" (cdr (assoc 2 lay))))) ListCalq)) (setq ListCalq (cons (cdr (assoc 2 lay)) ListCalq)) ) ;_ Fin de progn ) ;_ Fin de if ) ;_ Fin de while (vlax-ldata-put "DenisH" NomEtat ListCalq) (vlax-ldata-put "DenisH" CalqCour (getvar "clayer")) (vla-endundomark Doc) (princ) ) ;_ Fin de defun ;;;************************************************* ;;; Récupération des états de calque dans le dessin ;;;************************************************* (defun c:RecupEtatCalq (NomEtat / Doc ListCalq lay CalqCour) (princ "\nDéveloppé par Denis H.") (setq Doc (vla-get-activedocument (vlax-get-acad-object))) (setq CalqCour (strcat "ListCalq_" NomEtat "_CalqCour")) (setq NomEtat (strcat "ListCalq_" NomEtat)) (setq ListCalq (vlax-ldata-get "DenisH" NomEtat)) (setq CalqCour (vlax-ldata-get "DenisH" CalqCour)) (command-s "-calque" "l" CalqCour "") (setvar "clayer" CalqCour) (while (/= (car ListCalq) nil) (if (= (cadr ListCalq) 0) (command-s "-calque" "l" (car ListCalq) "") (command-s "-calque" "g" (car ListCalq) "") ) ;_ Fin de if (setq ListCalq (cddr ListCalq)) ) ;_ Fin de while (vla-endundomark Doc) (princ) ) ;_ Fin de defun[/Code] David, tiens moi au courant pour savoir si ce que j'ai fais te convient... PS : j'ai corrigé un petit bug concernant le calque courant.
  15. Salut Patrick_35. Tu veux dire, geler tous les calques qui ne sont pas dans ma liste et libérer ceux qui y sont ? Effectivement, je n'avais pas vu ça comme ça...
  16. Bonjour à tous... Voilà, j'ai tenté de faire un petit code pour un membre du site, mais je galère un peu avec une liste. Je place dans un (vlax-ldata la liste des calques avec la valeur de leur statu "Gelé/Libéré". Tel que ma variable ListCalq = ("RES_ELEC_HT" 0 "RES_TEL" 0 "0" 0) Ensuite, je tente de réattribuer les valeurs ainsi sauvegardées avec un petit bout de code que je tente d'écrire... Mais il plante, enfin non, il ne se termine jamais... Le voici : ;;;************************************************** ;;; Récupération des états de calque dans un fichier ;;;************************************************** (defun c:RecupEtatCalq (/ Doc ListCalq lay) (princ "\nDéveloppé par Denis H.") (setq Doc (vla-get-activedocument (vlax-get-acad-object))) (setq ListCalq (vlax-ldata-get "DenisH" "ListCalqActif")) ;;(setq n 0) (while (/= (car ListCalq) nil) (if (= (cadr ListCalq) 0) (command-s "-calque" "l" (car ListCalq) "") (command-s "-calque" "g" (car ListCalq) "") ) ;_ Fin de if (setq ListCalq (cddr ListCalq)) ) ;_ Fin de while (vla-endundomark Doc) (princ) ) ;_ Fin de defun Si quelqu'un a un truc, une astuce, un conseil... Je suis preneur... Denis...
  17. DenisHen

    Objets superposés

    Salut. Si tu as AutoCAD MAP, il y a la commande nettoyer...
  18. En fait, ce n'est pas le 70 qui génait, mais sa valeur. Pour savoir si le calque est actif, sa valeur est nil, sinon, c'est T. Pour son gèle, c'est 0 ou 1... D'où mon erreur. Voici le code corrigé : ;;;************************************************ ;;; Sauvegarde des états de calque dans un fichier ;;;************************************************ (defun c:SauveEtatCalq (/ Doc ListCalq lay) (princ "\nDéveloppé par Denis H.") (setq Doc (vla-get-activedocument (vlax-get-acad-object))) (while (setq lay (tblnext "LAYER" (not lay))) (if (and (not (wcmatch (cdr (assoc 2 lay)) "*|*")) (/= (cdr (assoc 70 (tblsearch "layer" (cdr (assoc 2 lay))))) 1) ) ;_ Fin de and (setq ListCalq (cons (cdr (assoc 2 lay)) ListCalq)) ) ;_ Fin de if ) ;_ Fin de while (vlax-ldata-put "DenisH" "ListCalqActif" ListCalq) (vla-endundomark Doc) (princ) ) ;_ Fin de defun ;;;************************************************ ;;; Sauvegarde des états de calque dans un fichier ;;;************************************************ (defun c:RecupEtatCalq (/ Doc ListCalq lay) (princ "\nDéveloppé par Denis H.") (setq Doc (vla-get-activedocument (vlax-get-acad-object))) (setq ListCalq (vlax-ldata-get "DenisH" "ListCalqActif")) (setq n 0) (if (/= (nth n ListCalq) "") (while (/= (nth n ListCalq) nil) (command-s "-calque" "l" (nth n ListCalq) "") (setq n (+ 1 n)) ) ;_ Fin de while ) ;_ Fin de if (vla-endundomark Doc) (princ) ) ;_ Fin de defun Pour inverser le gèle/dégèle des calques, change le 1 en 0 à la fin de cette ligne : (/= (cdr (assoc 70 (tblsearch "layer" (cdr (assoc 2 lay))))) 1) 0=sauvegarde des calques libérés 1=sauvegarde des calques gelés En espérant t'avoir été utile... Denis...
  19. Re. Je vois, je pense que c'est le 70 dans la ligne : (/= (cdr (assoc 70 (tblsearch "layer" (cdr (assoc 2 lay))))) Je vais chercher...
  20. Re. Essai avec ceci : ;;;************************************************ ;;; Sauvegarde des états de calque dans un fichier ;;;************************************************ (defun c:SauveEtatCalq (/ Doc ListCalq lay Chemin Fichier EcritFich) (princ "\nDéveloppé par Denis H.") (setq Doc (vla-get-activedocument (vlax-get-acad-object))) (while (setq lay (tblnext "LAYER" (not lay))) (if (and (not (wcmatch (cdr (assoc 2 lay)) "*|*")) (/= (cdr (assoc 70 (tblsearch "layer" (cdr (assoc 2 lay))))) nil ) ;_ Fin de /= ) ;_ Fin de and (setq ListCalq (cons (cdr (assoc 2 lay)) ListCalq)) ) ;_ Fin de if ) ;_ Fin de while (vlax-ldata-put "DenisH" "ListCalqActif" ListCalq) (vla-endundomark Doc) (princ) ) ;_ Fin de defun ;;;************************************************ ;;; Sauvegarde des états de calque dans un fichier ;;;************************************************ (defun c:RecupEtatCalq (/ Doc ListCalq lay Chemin Fichier LitFich) (princ "\nDéveloppé par Denis H.") (setq Doc (vla-get-activedocument (vlax-get-acad-object))) (setq ListCalq (vlax-ldata-get "DenisH" "ListCalqActif")) (setq n 0) (if (/= (nth n ListCalq) "") (while (/= (nth n ListCalq) nil) (command-s "-calque" "l" (nth n ListCalq) "") (setq n (+ 1 n)) ) ;_ Fin de while ) ;_ Fin de if (vla-endundomark Doc) (princ) ) ;_ Fin de defun ;|«Visual LISP© Format Options» (72 2 40 2 T "Fin de " 100 50 0 0 nil nil nil nil T) ;*** NE PAS AJOUTER de texte au-dessous du commentaire! ***|;
  21. Bonjour David. Non, mon code ne fonctionne que sur l'Activation/InActivation des calques, par sur le Gèle/Dégèle... Je vais chercher comment le modifier...
  22. Re. Alors déjà, ton prof devrait avoir un répertoire "public", histoire de, justement, corriger les travaux de ses élèves. Et il devrait être déclaré dans les fichiers connus d'AutoCAD? Puis, le chemin du bureau change dans les différentes versions de Windows... En outre, le bureau devrait se situer dans le disque C et il me semble que les "\\" sont nécessaires : "^C^C(load "c:\\Bureau\\Fichier.lsp");" Mais je pense que le répertoire du dessin en cour est désigné comme répertoire connu d'AutoCAD (de confiance ou pas, ça, je ne sais pas)... Donc, si c'est vrai, tu places tes LISP dans le même répertoire que ton DWG... Enfin d'autres, comme Maître (gile), t'expliqueront ça mieux que moi, car là, on doit avoir à peu près le même niveau ;)
  23. Content d'avoir aidé... ;)
  24. Oui, tu peux ajouter ton chemin, avec la commande "Options", onglet "Fichiers", première ligne "Chemin de recherche de fichiers de support en cours d'utilisation"... "Ajouter" puis "Parcourir"... Oops, je n'avais pas vu que Maître (gile) m'avait grillé... ;)
  25. Salut nosset, et merci pour cette réponse... C'est parfait...
×
×
  • 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é